令人印象深刻的地方,如纽约

时间:2014-01-13 11:59:54

标签: tokenize opennlp

我一直在使用NLP的标记器,但是当涉及到地方时,我不确定这种行为。如果我给纽约或墨西哥城,分档器将分别分为新的和纽约。

但我希望它只是纽约。是否有任何标记器来实现这一点,如果没有,如何实现这个结果?

由于

2 个答案:

答案 0 :(得分:0)

对于匹配一个或两个令牌,您需要一种某种递归集。

单一代币(华盛顿,迈阿密)。

潜在的第一个前缀标记,它们后面有一些东西:

(Haven,York)

San (Fransisco)。

基本上,您首先匹配单个令牌,然后匹配令牌并影响第二个令牌的解析。

一种方法是使用hm = HashMap<String, HashSet<String>>之类的

hs = new HashSet()
hs.add("Haven");
hs.add("York");

hm = new HashMap();
HashMap.put("New", hs);

当你在hm的keySet中得到一个匹配项时,使用相应的值来匹配下一个标记(但不要忘记它可能是一个错误的匹配!!)

答案 1 :(得分:0)

您的标记生成器行为正常。 NewYork是两种不同的令牌。你想做的是一个叫做 chunking 的东西。 Here是关于分块的一些信息,可以为您提供一些背景知识。

根据您使用的NLP库,可能会内置一些用于分块的功能。对于您在问题标签中包含的OpenNLP,请参阅此相关问题:How to extract the noun phrases using Open nlp's chunking parser