我一直在使用NLP的标记器,但是当涉及到地方时,我不确定这种行为。如果我给纽约或墨西哥城,分档器将分别分为新的和纽约。
但我希望它只是纽约。是否有任何标记器来实现这一点,如果没有,如何实现这个结果?
由于
答案 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)
您的标记生成器行为正常。 New
和York
是两种不同的令牌。你想做的是一个叫做 chunking 的东西。 Here是关于分块的一些信息,可以为您提供一些背景知识。
根据您使用的NLP库,可能会内置一些用于分块的功能。对于您在问题标签中包含的OpenNLP,请参阅此相关问题:How to extract the noun phrases using Open nlp's chunking parser