答案 0 :(得分:0)
您可能希望使用regexner
代替此用例。
考虑这句话(把它放在phone-number-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的更多信息,请访问: