在Java中将单词转换为其名词/形容词/动词形式

时间:2013-05-25 10:51:04

标签: java nlp nltk stanford-nlp opennlp

在这个问题中可以看到,是否可以使用Java替代NLTK来“详细说明”单词?

Convert words between verb/noun/adjective forms

例如,我想将出生转换为出生,因为当使用Wordnet相似性时,该算法并未表明出生和出生非常相似。

因此,我希望将出生时转为出生,反之亦然。为了有更多相似的词。

你有什么建议?我发现了一些工具,但我不确定他们是否可以这样做:   - NTLK(我猜只有python)   - OpenNlp   - 斯坦福 - Nlp   - 简单的NLG

谢谢

1 个答案:

答案 0 :(得分:1)

使用wordnet的快速而肮脏的解决方案可能如下。

>>>from ntlk.corpus import wordnet as wn
>>> wn.synsets('born')
[Synset('born.n.01'), Synset('bear.v.01'), Synset('give_birth.v.01'), Synset('digest.v.03'), Synset('bear.v.04'), Synset('bear.v.05'), Synset('bear.v.06'), Synset('hold.v.11'), Synset('yield.v.10'), Synset('wear.v.02'), Synset('behave.v.02'), Synset('bear.v.11'), Synset('hold.v.14'), Synset('have_a_bun_in_the_oven.v.01'), Synset('born.a.01'), Synset('natural.s.09')]

>>> wn.synsets('birth')
[Synset('birth.n.01'), Synset('birth.n.02'), Synset('parturition.n.01'), Synset('parentage.n.02'), Synset('birth.n.05'), Synset('give_birth.v.01')]
>>>

在这里你可以看到“Synset('give_birth.v.01')]”是一个常用的结果集,它是“动词”。因此,通过这种方式,您可以找到解决方法并查看是否存在任何匹配结果,并将其转换为出生,反之亦然!