Sustitución por los synsets en Python patrón packatge
Pregunta
Mi objetivo es crear un sistema que será capaz de tomar cualquier texto al azar, el extracto de las sentencias, quitar puntuaciones, y luego, en el piso de la pena (uno de ellos), para reemplazar al azar NN o VB etiquetado palabras con sus meronym, holonym o sinónimo así como con una palabra similar a la de un WordNet synset.Hay un montón de trabajo por delante, pero tengo un problema al principio.
Para esto yo uso el patrón y TextBlob paquetes.Esto es lo que he hecho hasta ahora...
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()
Ahora todo funciona de la manera que yo quiero, pero cuando trato de extraer el decirhyponym de este djidja
variable resulta ser imposible, ya que es un Synset
objeto, y no puede manipular de todos modos.
Alguna idea de cómo extraer la misma palabra que aparece en hyponyms lista (es decir, print(djidja[2])
muestra Synset(u'bowler')
...entonces, ¿cómo extraer sólo 'bowler'
de esta)?
Solución
Recuerde que un sintonizador es solo una lista de palabras marcadas como sinónimos.Dada una puesta de sol, puedes extraer las palabras que lo forman:
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)
ESTA SALIDAS:
Out[14]: [u'dog', u'domestic dog', u'Canis familiaris']
También puede extraer hipernims 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']