Pergunta

Meu objetivo é criar um sistema que seja capaz de pegar qualquer texto aleatório, extrair frases, remover pontuações e, então, na frase simples (uma delas), substituir aleatoriamente palavras marcadas com NN ou VB por seu merônimo, holônimo ou synonim, bem como com uma palavra semelhante de um synset WordNet.Há muito trabalho pela frente, mas tenho um problema logo no início.

Para isso eu uso pacotes pattern e TextBlob.Isto é o que tenho feito até agora...

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()

Agora tudo funciona do jeito que eu quero, mas quando tento extrair o i.e.hipônimo disso djidja variável, isso se mostra impossível, pois é uma Synset objeto, e não posso manipulá-lo de qualquer maneira.

Alguma idéia de como extrair a mesma palavra relatada na lista de hipônimos (ou seja, print(djidja[2]) exibições Synset(u'bowler')...então, como extrair apenas 'bowler' disso)?

Foi útil?

Solução

Lembre-se de que um synset é apenas uma lista de palavras marcadas como sinônimos.Dado um pôr do sol, você pode extrair as palavras que o formam:

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)

Isso produz:

Out[14]: [u'dog', u'domestic dog', u'Canis familiaris']

Você também pode extrair hiperônimos e hipônimos:

print(s.hypernyms())
Out[16]: [Synset(u'canine'), Synset(u'domestic animal')]
print(s.hypernyms()[0].synonyms)
Out[17]: [u'canine', u'canid']
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top