Python模式packatge中的synset替换
我的目标是创建一个系统,该系统能够获取任何随机文本,提取句子,删除标点符号,然后,在裸句(其中一个)上,随机将NN或VB标记的单词替换为meronym、holonym或synonim,以及WordNet语法集中的类似单词。前面还有很多工作要做,但一开始我就遇到了一个问题 为此,我使用pattern和TextBlob包。这就是我到目前为止所做的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
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接口,=)