gpt4 book ai didi

python - 尝试从 nltk 获取首字母缩略词

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:09 24 4
gpt4 key购买 nike

我是个新手,正在学习Python。我正在尝试编写一个应用程序,它将接受用户提供的单词并给出有关该单词的一些替代建议。看来nltk有我需要的大部分东西。我一直在查看一些示例,并且能够使其按如下方式工作:

from nltk.corpus import wordnet as wn
for lemma in wn.synset('car.n.01').lemmas:
print lemma, lemma.count()

这很好用。我发现的问题是,如果用户拼写错误或复数单词,那么我会崩溃:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/nltk-2.0.1rc1-py2.6.egg/nltk/corpus/reader/wordnet.py", line 1035, in synset
raise WordNetError(message % (lemma, pos))
nltk.corpus.reader.wordnet.WordNetError: no lemma 'cars' with part of speech 'n'

根据此错误,它似乎无法找到“汽车”作为名词。有没有办法进行搜索以查看是否找到该单词,或者有更好的方法来实现这一点?

最佳答案

我认为您没有以正确的方式调用 Wordnet:

>>> wn.synsets('cars')
[Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'),
Synset('car.n.04'), Synset('cable_car.n.01')]

现在:

>>> for synset in wn.synsets('cars'):
... synset.lemmas
[Lemma('car.n.01.car'), Lemma('car.n.01.auto'),
Lemma('car.n.01.automobile'),Lemma('car.n.01.machine'),
Lemma('car.n.01.motorcar')]...

对于拼写错误问题,我认为 NLTK 没有内置功能。您可以:

  1. 使用像 pyenchant 这样的库,它提供对一些不错的 C 库(Myspell、Hunspell)的访问。在我看来,主要问题是对于拼写错误的单词,您没有得到很多不同的建议。
  2. 检查用户提交的单词,并提出替代拼写。这没什么大不了的。您可以从研究 this program 是什么开始。 (或直接使用它),它提供了一个很好的示例,说明如何在单词列表上构建语法索引。

要获取有关引理的信息:

>>> # get one of the lemmas
>>> lemma = wn.synsets('cars')[0].lemmas[0]
>>> lemma
Lemma('car.n.01.car')
>>> dir(lemma)
[...'antonyms', 'attributes', 'causes', 'count',
'derivationally_related_forms', 'entailments', 'frame_ids'... 'name'...]
>>> lemma.name
'car'

在每个对象上使用dir来检查它的属性,并尝试一下:)

关于python - 尝试从 nltk 获取首字母缩略词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17217381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com