使用NLTK和WordNet;如何将简单时态动词转换为现在,过去或过去分词形式?
nlp
nltk
python
wordnet
6
0

使用NLTK和WordNet ,如何将简单的时态动词转换为现在,过去或过去分词形式?

例如:

我想编写一个函数,该函数以预期的形式给我动词,如下所示。

v = 'go'
present = present_tense(v)
print present # prints "going"

past = past_tense(v)
print past # prints "went"
参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

对于Python3:

git clone https://github.com/clips/pattern
cd pattern
git fetch
git checkout development
pip install mysqlclient
python setup.py install

然后

from pattern.en import conjugate, lemma, lexeme,PRESENT,SG
print (lemma('gave'))
print (lexeme('gave'))
print (conjugate(verb='give',tense=PRESENT,number=SG)) # he / she / it

产量

give ['give', 'gives', 'giving', 'gave', 'given'] gives

感谢@Agargara指点&Pattern的作者的出色工作,请支持他们;-)

收藏
评论

在NLTK的帮助下,这也可以完成。它可以给出动词的基本形式。但不是确切的时态,但仍然有用。请尝试以下代码。

from nltk.stem.wordnet import WordNetLemmatizer
words = ['gave','went','going','dating']
for word in words:
    print word+"-->"+WordNetLemmatizer().lemmatize(word,'v')

输出为:

gave-->give
went-->go
going-->go
dating-->date

看看Stack Overflow的问题NLTK WordNet Lemmatizer:难道它不能使单词的所有词形变化吗?

收藏
评论

我认为您正在寻找的是NodeBox :: Linguistics库。它确实做到了:

print en.verb.present("gave")
>>> give
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号