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

Sof*_*tic 33 python nlp nltk wordnet

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

例如:

我想写一个函数,它会给我预期形式的动词,如下所示.

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

past = past_tense(v)
print past # prints "went"
Run Code Online (Sandbox Code Playgroud)

Gun*_*jan 21

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

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

输出是:

gave-->give
went-->go
going-->go
dating-->date
Run Code Online (Sandbox Code Playgroud)

看看Stack Overflow问题NLTK WordNet Lemmatizer:难道它不应该把一个词的所有变形推理出来吗?.


msb*_*msb 19

我想你要找的是NodeBox :: Linguistics库.它完全是这样的:

print en.verb.present("gave")
>>> give
Run Code Online (Sandbox Code Playgroud)

  • 遗憾的是,该库不适用于Python3. (3认同)
  • NodeBox已被模式(https://www.clips.uantwerpen.be/pattern)取代.目前没有正式的python 3支持模式,虽然看起来你可以通过构建开发分支来实现它(参见:https://github.com/clips/pattern/issues/62) (3认同)
  • 我已经设法让它在 Windows/Anaconda/Python 3.6 上运行,只需要先运行“pip install mysqlclient”和“git clone https://github.com/clips/pattern cd pattern git fetch git checkout development python setup .py 安装”。优秀的工作模式团队,将在最接近的场合为您提供支持。 (2认同)

Ana*_*eev 11

对于Python3:

git clone https://github.com/clips/pattern
cd pattern
git fetch
git checkout development
pip install mysqlclient
python setup.py install
Run Code Online (Sandbox Code Playgroud)

然后

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
Run Code Online (Sandbox Code Playgroud)

产量

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

向@Agargara指点和作者的Pattern为他们的美丽工作,去支持他们;-)