无锡网站服务,工具用具使用费是指企业施工生产,免费的好网站,百度导航官网我需要输入一个单词的输入文本文件。然后#xff0c;我需要使用wordnet查找lemma_names#xff0c;单词的同义词集的定义和示例。我读过这本书#xff1a;使用NLTK 2.0食谱进行Python文本处理和使用NLTK进行自然语言处理#xff0c;以帮助我朝这个…我需要输入一个单词的输入文本文件。然后我需要使用wordnet查找lemma_names单词的同义词集的定义和示例。我读过这本书使用NLTK 2.0食谱进行Python文本处理和使用NLTK进行自然语言处理以帮助我朝这个方向发展。尽管我已经知道可以使用终端来完成此操作但是我无法使用文本编辑器来完成此操作。
例如如果输入文本具有单词 flabbergasted则输出需要采用以下方式
吓坏的
(动词)吃惊的吃惊的吃惊的克服这使人感到困惑
(形容词)傻眼的傻眼的吃惊的震惊的雷击过的傻眼的傻傻的-仿佛惊奇而惊奇地傻了起来由于否认曾见过这起事故一个警察圈感到震惊饱受摧残的al徒无语被他晋升的消息震惊了
同义词集定义和例句可直接从WordNet获得
我有以下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33from __future__ import division
import nltk
from nltk.corpus import wordnet as wn
tokenizer nltk.data.load(tokenizers/punkt/english.pickle)
fp open(inpsyn.txt)
data fp.read()
#to tokenize input text into sentences
print
-----
.join(tokenizer.tokenize(data))# splits text into sentences
#to tokenize the tokenized sentences into words
tokens nltk.wordpunct_tokenize(data)
text nltk.Text(tokens)
words [w.lower() for w in text]
print words #to print the tokens
for a in words:
print a
syns wn.synsets(a)
printsynsets:, syns
for s in syns:
for l in s.lemmas:
print l.name
print s.definition
print s.examples
我得到以下输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19flabbergasted
[flabbergasted]
flabbergasted
synsets: [Synset(flabbergast.v.01), Synset(dumbfounded.s.01)]
flabbergast
boggle
bowl_over
overcome with amazement
[This boggles the mind!]
dumbfounded
dumfounded
flabbergasted
stupefied
thunderstruck
dumbstruck
dumbstricken
as if struck dumb with astonishment and surprise
[a circle of policement stood dumbfounded by her denial of having seen the accident, the flabbergasted aldermen were speechless, was thunderstruck by the news of his promotion]
有没有一种方法可以检索词性以及引理名称组
如果您重新登录到SO则应该接受Andreys的回答。 因为他不仅回答了问题还回应了您的评论以帮助您。
1
2def synset(word):
wn.synsets(word)
不返回任何内容因此默认情况下您得到None
你应该写
1
2def synset(word):
return wn.synsets(word)
提取引理名称
1
2
3
4
5
6
7
8
9
10from nltk.corpus import wordnet
syns wordnet.synsets(car)
syns[0].lemmas[0].namecar
[s.lemmas[0].name for s in syns][car, car, car, car, cable_car]
[l.name for s in syns for l in s.lemmas]
[car, auto, automobile, machine, motorcar, car, railcar, railway_car, railroad_car, car, gondola, car, elevator_car, cable_car, car]
非常感谢 :)真是个愚蠢的错误
有没有一种方法可以仅从同义词集中提取单词并将其作为参数传递例如对于单词flabbergasted您将获得Synset(flabbergast.v.01)和Synset(dumbfounded.s.01)。如何将它们作为参数传递给lemma_name函数
从nltk.corpus导入wordnet syns wordnet.synsets(car)[s.lemmas [0]。s在syns中的名称] [汽车汽车汽车汽车电缆车]
我更新了答案
万分感谢我已经用输出更新了代码。有没有一种方法可以同时检索词类和词组名称呢例如字词是flabbergastboggle和bowl over。有没有办法将其与输出结合在一起
要获得词性请使用[s.lemmas中l的l.synset.pos对于syns中s的使用]
打印[s.lemmas()中l的syns中s的s的l.name()]
我如何使用自己的火车数据
在这里我创建了一个易于使用(导入)的模块并将一个字符串传递给它它将返回该字符串的所有引理词。
模块
1
2
3
4
5
6
7
8
9
10
11
12#!/usr/bin/python2.7pass a string to this funciton ( eg car) and it will give you a list of
words which is related to cat, called lemma of CAT.
from nltk.corpus import wordnet as wn
import sys
#print all the synset element of an element
def lemmalist(str):
syn_set []
for synset in wn.synsets(str):
for item in synset.lemma_names:
syn_set.append(item)
return syn_set
用法
注意模块名称为lemma.py因此来自lemma import lemmalist
1
2
3 from lemma import lemmalistlemmalist(car)
[car, auto, automobile, machine, motorcar, car, railcar, railway_car, railroad_car, car, gondola, car, elevator_car, cable_car, car]
干杯!
出现错误no ImportError: No module named lemma
1
2
3
4
5synonyms []
for syn in wordnet.synsets(car):
for l in syn.lemmas():
synonyms.append(l.name())
print synonyms
请修改您的答案以包含更多信息。不建议使用仅代码和尝试此答案因为它们不包含可搜索的内容并且不解释为什么有人应该尝试此。
在NLTK 3.0中lemma_names已从属性更改为方法。 因此如果出现错误提示
1TypeError: method object is not iterable
您可以使用以下方法修复它
1
2 from nltk.corpus import wordnet as wn[item for sysnet in wn.synsets(car) for item in sysnet.lemma_names()]
这将输出
1
2
3
4
5 [
car, auto, automobile, machine, motorcar, car,
railcar, railway_car, railroad_car, car, gondola,
car, elevator_car, cable_car, car
]