2016-09-20 65 views
0

我發現來自Stanford CoreNLP的功能強大的RegexNER及其超集TokensRegex
有一些規則應該給我很好的結果,例如標題爲PERSON的模式:
「g。Meho Mehic」或「gdin。N. Neko」(g。和gdin。是波斯尼亞語中的縮寫, )。Stanford CoreNLP合併令牌

我在使用現有的標記器時遇到了一些麻煩。它將一些字符串拆分爲兩個令牌,其中一些離開爲一個字符,例如令牌「g」。保留爲單詞<word>g.</word>和令牌「gdin」。分爲2個標記:<word>gdin</word><word>.</word>

這會導致麻煩我正則表達式,我必須處理一個令牌和多令牌的情況下(注意兩個「可能點」上),RegexNER例如:

(/g\.?|gdin\.?/ /\./? ([{ word:/[A-Z][a-z]*\.?/ }]+)) PERSON 

而且,這會導致另一個問題,句子拆分,一些句子不被很好地識別,所以正則表達式失敗......例如,當一個句子包含「gdin」時。它會將它分成兩部分,因此一個點將結束(不存在的)句子。我設法繞過ssplit.isOneSentence = true現在。

問題:

  1. 我必須使自己的標記生成器,以及如何? (合併一些象「gdin」的令牌)
  2. 有沒有我錯過的設置可以幫助我?

回答

1

好吧,我想了一下,實際上可以想到你的情況非常簡單的事情。你可以做的一件事就是將「gdin」添加到標記器中的標題列表中。

標記生成規則在edu.stanford.nlp.process.PTBLexer.flex(看線741)

我真的不明白,很好,但顯然也有職稱的列表中的標記生成器在那裏,所以他們必須是不會分裂時期的情況。

這當然需要您使用Stanford CoreNLP的自定義版本。

您可以在我們的GitHub上獲得完整的代碼:https://github.com/stanfordnlp/CoreNLP

有建立一個罐子與所有主要的斯坦福CoreNLP類的主要頁面上的說明。我想如果你只是運行ant進程,它會自動生成基於PTBLexer.flex的新的PTBLexer.java。

+0

謝謝,我昨天就想到了這個。這將是很好,如果tokenizer可以用這些東西參數化...:D –

+0

我已經做了itttttttt,再次感謝! :D在'build.xml'中有一個叫'flexeverything'的任務。我只需要用這個新的替換舊的罐子。 –

+0

另外我無法得到這個重要的corenlp問題的答案http://stackoverflow.com/questions/39688652/german-corenlp-model-defaulting-to-english-models – stackit

相關問題