Python模式packatge中的synset替换

Python模式packatge中的synset替换,python,nlp,wordnet,textblob,Python,Nlp,Wordnet,Textblob,我的目标是创建一个系统,该系统能够获取任何随机文本,提取句子,删除标点符号,然后,在裸句(其中一个)上,随机将NN或VB标记的单词替换为meronym、holonym或synonim,以及WordNet语法集中的类似单词。前面还有很多工作要做,但一开始我就遇到了一个问题 为此,我使用pattern和TextBlob包。这就是我到目前为止所做的 from pattern.web import URL, plaintext from pattern.text import tokenize from

我的目标是创建一个系统,该系统能够获取任何随机文本,提取句子,删除标点符号,然后,在裸句(其中一个)上,随机将NN或VB标记的单词替换为meronym、holonym或synonim,以及WordNet语法集中的类似单词。前面还有很多工作要做,但一开始我就遇到了一个问题

为此,我使用pattern和TextBlob包。这就是我到目前为止所做的

from pattern.web import URL, plaintext
from pattern.text import tokenize
from pattern.text.en import wordnet
from textblob import TextBlob
import string

s = URL('http://www.fangraphs.com/blogs/the-fringe-five-baseballs-most-compelling-fringe-prospects-35/#more-157570').download()
s = plaintext(s, keep=[])
secam = (tokenize(s, punctuation=""))
simica = secam[15].strip(string.punctuation)
simica = simica.replace(",", "")

simica = TextBlob(simica)
simicaTg = simica.words

synsimica = wordnet.synsets(simicaTg[3])[0]
djidja = synsimica.hyponyms()
现在一切都按照我想要的方式运行,但是当我试图从这个
djidja
变量中提取I.e.下义词时,它被证明是不可能的,因为它是
Synset
对象,我无论如何都无法操作它


你知道如何从下义词列表中报告的单词中提取一个词吗(例如,
print(djidja[2])
显示
Synset(u'bowler')
…那么如何仅从中提取
'bowler'

回想一下,Synset只是一个标记为同义词的单词列表。给定日落,您可以提取构成日落的单词:

from pattern.text.en import wordnet
s = wordnet.synsets('dog')[0] # a word can belong to many synsets, let's just use one for the sake of argument
print(s.synonyms)
这将产生:

Out[14]: [u'dog', u'domestic dog', u'Canis familiaris']
您还可以提取Hypernim和下义词:

print(s.hypernyms())
Out[16]: [Synset(u'canine'), Synset(u'domestic animal')]
print(s.hypernyms()[0].synonyms)
Out[17]: [u'canine', u'canid']

谢谢你,那正是我要找的东西。同义词是常用的字符串,而synset是不可变的对象。请注意,
nltk
在python中也有类似的wordnet接口,=)