python语言基本语句例句-关于python:使用WordNet查找同义词,定义和例句

我需要输入一个单词的输入文本文件。然后,我需要使用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)

print"synsets:", 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].name

>>> "car"

[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中的名称] >>> [汽车,汽车,汽车,汽车,电缆车]

我更新了答案

万分感谢!!我已经用输出更新了代码。有没有一种方法可以同时检索词类和词组名称呢?例如,字词是flabbergast,boggle和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.7

""" pass 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 lemmalist

>>> lemmalist("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"

]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值