我正在訓練我的NER到實體類型Phonenumber,其詞類是數字。然而,當我測試與我訓練過的相同數據時,分類器未識別電話號碼。 斯坦福NER - 無法識別電話號碼
是因爲電話號碼的詞性(POS)是數字(CD)嗎?
我正在訓練我的NER到實體類型Phonenumber,其詞類是數字。然而,當我測試與我訓練過的相同數據時,分類器未識別電話號碼。 斯坦福NER - 無法識別電話號碼
是因爲電話號碼的詞性(POS)是數字(CD)嗎?
您可能希望使用regexner
來替代此用例。
考慮這句話(把它在手機用戶號碼將example.txt):
You can reach the office at 555 555-5555.
如果你犯了一個regexner
規則文件中像這樣(注意每列的製表符分隔)
[0-9]{3}\W[0-9]{3}-[0-9]{4} PHONE_NUMBER MISC,NUMBER 1
並運行此命令:
java -Xmx8g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner,regexner -regexner.mapping phone_number.rules -file phone-number-example.txt -outputFormat text
它將標識輸出NER標記中的電話號碼。
需要注意的一個問題。您會注意到標記器會將「555 555-5555」變成一個標記。規則文件的第一列是一個匹配令牌的正則表達式。正則表達式模式是一個空格分隔的模式列表,它匹配您想要標記的每個標記。
所以在這個例子中,我所制定的規則有一個「\ W」來捕獲空間。當我使用「\ s」等等時,規則不起作用。所以我認爲編寫包含空格的標記的正則表達式存在問題。典型的令牌不包含空間。
所以你可能想通過擴展「\ W」來解決這個問題,並且排除你不想要的其他字符,因爲「\ W」只是表示非單詞字符。此外,您顯然可以使我列出的模式更加複雜,並捕獲各種電話號碼模式。
上RegexNER更多信息可以在這裏找到:
Thnaks的答案。我會嘗試這種方式。歡呼:) –