2017-02-23 46 views
0

我正在训练我的NER到实体类型Phonenumber,其词类是数字。然而,当我测试与我训练过的相同数据时,分类器未识别电话号码。 enter image description here斯坦福NER - 无法识别电话号码

是因为电话号码的词性(POS)是数字(CD)吗?

回答

0

您可能希望使用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更多信息可以在这里找到:

http://nlp.stanford.edu/software/regexner.html

+0

Thnaks的答案。我会尝试这种方式。欢呼:) –