2010-11-20 60 views
5

我是NLP的新手,並試圖找出名稱實體識別器如何註釋命名實體。我正在試驗斯坦福NER工具包。當我在標準的更正式的數據集上使用NER時,NER遵循所有命名約定來表示命名實體,例如在新聞專線或新聞博客中,NER正確註釋這些實體。但是,當我運行非正式數據集(如twitter)時,NER不會像應該一樣使用大寫字母,NER不會註釋這些實體。我正在使用的分類器是3-CRF序列化分類器。任何人都可以告訴我如何讓NER識別小寫字母?非常感謝有關如何破解NER以及如何進行改進的有用建議。預先感謝您的幫助。斯坦福NER工具包 - 小寫實體識別

+0

你上標記的鳴叫培訓,或者是你試圖使用可能已經在newswire文本上進行過培訓的預先存在的模型? – 2010-12-15 00:38:57

回答

1

我覺得Twitter對於這個應用程序來說非常困難。大寫字母是一個很大的線索,正如你所說,在Twitter上經常缺失。用於刪除有效英文單詞的字典檢查功能有限,因爲Twitter文本包含大量的縮寫詞,而且它們通常是唯一的。

也許語音標記和頻率分析都可以用來幫助改善專有名詞的檢測?

+2

謝謝你的回覆。我打算做的是,使用包含大寫和小寫字母實體的新功能集來生成斯坦福大學的NLP serailiser,然後使用Stanford NER對其進行註釋。它應該像我相信的那樣工作,但不知怎的,在我完成所有工作並獲得序列化器並運行stanford NER之後,它將所有實體命名爲PERSON,儘管我只有一個實體在作爲數據集中的PERS註釋。 – Anu 2010-11-21 00:11:32

+1

我認爲POS標記會更好,但是我們已經使用斯坦福大學的NER,而且我也很好奇它的工作方式,以便讓它以小寫運行。 – Anu 2010-11-21 00:12:18

4

恐怕沒有一種簡單的方法可以讓我們發佈的訓練模型在運行時忽略案例信息。所以,是的,他們通常只會標註大寫的名字。這將有可能訓練一個無條件的模型,它可以合理地工作(但不是以套用的文本爲例,因爲例子是英語中的一條重要線索(但不是德語,中文,阿拉伯語等)

+3

修訂答案:我們現在正在爲我們的幾個工具發佈無故障模型,這些工具可以更好地運行在uncased文本上。 (雖然不如在套用文本上運行套管模型,因爲大寫確實提供了有用的英文信息!)您可以從這裏單獨下載它們:http://nlp.stanford.edu/software/CRF-NER.shtml。 – 2012-06-20 15:45:20

+0

我們現在有一個truecaser。你現在可以在這裏找到這個問題更詳細的答案:https://stackoverflow.com/questions/45097507/how-to-recognize-a-named-entity-that-is-lowcase-such-as-kobe-科比逐corenlp/45122541#45122541 – 2017-10-06 00:56:50

2

沿和其他人的建議一樣,如果你使用的是基於特徵的分類器,我肯定會在人們的名字中加入100-200個最常見的3-4個字母的子字符串,或者在一個公認的特徵下添加一個gazzeteer。必然會在其他類型的詞中不常出現的個人名字中出現,比如「eli」。

1

問題有點舊,但其他人也許可以從中受益想法

可能訓練小寫分類器的一種方法是運行大寫的分類器,您已經擁有適合英語的大型數據集,然後處理標記的文本以刪除大小寫。然後你有一個標籤語料庫,你可以用它來訓練一個新的分類器。由於推文的特性,這種新的分類器對Twitter而言並不完美,但它是引導它的一種快速方法。

4

我知道這是一條古老的線索,但希望它能幫助別人。正如Christopher manning所回答的,檢測小寫字母的方法是用english.muc.7class.caseless.distsim.crf.ser.gz替換english.muc.7class.distsim.crf.ser.gz,當您解壓縮核心nlp無情jar文件。

例如,在我的Python的文件我一直都相同,只是將新的文件,它完美的作品(當然,大部分的時間)

st = NERTagger('/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/classifiers/english.muc.7class.caseless.distsim.crf.ser.gz', '/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/stanford-ner.jar') 
相關問題