斯坦福CoreNLP合并令牌

时间:2016-09-20 08:13:00

标签: token stanford-nlp

我从Stanford CoreNLP找到了强大的RegexNER及其超集TokensRegex
有一些规则可以给我很好的结果,比如带有标题的PERSON图案:
"克。 Meho Mehic"或者" gdin。 N. Neko" (g。和gdin。是先生波斯尼亚语的缩写)。

我在使用现有的tokenizer时遇到了一些麻烦。它将一些字符串拆分为两个标记,一些树叶作为一个标记,例如,标记&#34; g。&#34;保留为单词<word>g.</word>和标记&#34; gdin。&#34;分为2个令牌:<word>gdin</word><word>.</word>

这会导致我的正则表达式出现问题,我必须处理单令牌和多令牌情况(请注意两个&#34;也许 - 点&#34; s),RegexNER示例:

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

另外,这会导致另一个问题,句子分裂,一些句子没有被很好地识别,因此正则表达式失败...例如,当一个句子包含&#34; gdin。&#34;它将它分成两部分,因此一个点将结束(不存在的)句子。我设法暂时绕过ssplit.isOneSentence = true

问题:

  1. 我是否必须制作自己的标记器,以及如何制作标记器? (合并一些令牌,如&#34; gdin。&#34;)
  2. 我错过了任何可以帮助我的设置吗?

1 个答案:

答案 0 :(得分:1)

好的,我想了一下,实际上可以想到一些非常简单的事情。你可以做的一件事是添加&#34; gdin&#34;到标记器中的标题列表。

标记器规则在edu.stanford.nlp.process.PTBLexer.flex中(见第741行)

我并不是很了解这个令牌,但显然有一份职位名单,所以它们必须是不会分割期限的情况。

这当然要求您使用Stanford CoreNLP的自定义构建。

您可以在我们的GitHub上获取完整代码:https://github.com/stanfordnlp/CoreNLP

主页上有说明,用于构建包含所有主要Stanford CoreNLP类的jar。我想如果你只运行ant进程,它将自动生成基于PTBLexer.flex的新PTBLexer.java。