¿Hay alguna forma de capturar las restricciones de selección de WordNet (como + animate, + human, etc.) desde synsets a través de NLTK? ¿O hay alguna otra forma de proporcionar información semántica sobre synset? Lo más cerca que pude de él fueron las relaciones hipernym.Restricciones de selección de Wordnet en NLTK
Respuesta
Depende de lo que es su "restricciones de selección" o lo llamaría rasgos semánticos, ya que en la semántica clásicos, existe un mundo de concepts
y comparar entre los conceptos que tenemos que encontrar
- discriminar características (es decir, características de los conceptos que se utilizan para distinguirlos unos de otros) y
- características de similitud (es decir, características de los conceptos similares y pone de relieve la necesidad de diferenciarlos)
Por ejemplo:
Man is [+HUMAN], [+MALE], [+ADULT]
Woman is [+HUMAN], [-MALE], [+ADULT]
[+HUMAN] and [+ADULT] = similarity features
[+-MALE] is the discrimating features
El problema común de la semántica tradicionales y aplicando esta teoría en la semántica computacional es la cuestión de
"¿Hay una lista específica de funciones que podemos utilizar para comparar cualquier
"Si es así, ¿cuáles son las características en esta lista?" conceptos? "
(ver www.acl.ldc.upenn.edu/E/E91/E91-1034.pdf para más detalles)
Volviendo a WordNet, puedo sugerir 2 métodos para resolver el " restricciones de selección "
Primero, Compruebe los hipernotipos para las características discriminatorias, pero primero debe decidir cuáles son las características discriminatorias. Para diferenciar un animal de un humano, tomemos las características discriminantes como [+ -humano] y [+ -animal].
from nltk.corpus import wordnet as wn
# Concepts to compare
dog_sense = wn.synsets('dog')[0] # It's http://goo.gl/b9sg9X
jb_sense = wn.synsets('James_Baldwin')[0] # It's http://goo.gl/CQQIG9
# To access the hypernym_paths()[0]
# It's weird for that hypernym_paths gives a list of list rather than a list, nevertheless it works.
dog_hypernyms = dog_sense.hypernym_paths()[0]
jb_hypernyms = jb_sense.hypernym_paths()[0]
# Discriminating features in terms of concepts in WordNet
human = wn.synset('person.n.01') # i.e. [+human]
animal = wn.synset('animal.n.01') # i.e. [+animal]
try:
assert human in jb_hypernyms and animal not in jb_hypernyms
print "James Baldwin is human"
except:
print "James Baldwin is not human"
try:
assert human in dog_hypernyms and animal not in dog_hypernyms
print "Dog is an animal"
except:
print "Dog is not an animal"
En segundo lugar, Compruebe si hay medidas de similitud como @Jacob había sugerido.
dog_sense = wn.synsets('dog')[0] # It's http://goo.gl/b9sg9X
jb_sense = wn.synsets('James_Baldwin')[0] # It's http://goo.gl/CQQIG9
# Features to check against whether the 'dubious' concept is a human or an animal
human = wn.synset('person.n.01') # i.e. [+human]
animal = wn.synset('animal.n.01') # i.e. [+animal]
if dog_sense.wup_similarity(animal) > dog_sense.wup_similarity(human):
print "Dog is more of an animal than human"
elif dog_sense.wup_similarity(animal) < dog_sense.wup_similarity(human):
print "Dog is more of a human than animal"
Puede intentar usar algunas de las funciones de similitud con synsets seleccionados a mano, y usar eso para filtrar. Pero es esencialmente lo mismo que seguir el árbol de hypernym: afaik todas las funciones de similitud de wordnet usan la distancia de hypernym en sus cálculos. Además, hay muchos atributos opcionales de un synset que valdría la pena explorar, pero su presencia puede ser muy inconsistente.
- 1. ¿cómo importo y uso WordNet 3.0 en python?
- 2. Cómo usar Wordnet en SQL
- 3. Usando NLTK y WordNet; ¿Cómo convierto el verbo de tiempo simple a su forma participio presente, pasado o pasado?
- 4. Para buscar sinónimos, definiciones y oraciones de ejemplo usando WordNet
- 5. NLTK en IronPython de WPF
- 6. Wordnet edit tree structure
- 7. ¿WordNet tiene "niveles"? (PNL)
- 8. Encontrar palabras de Wordnet separadas por una distancia de edición fija de una palabra dada
- 9. análisis de sentimiento - wordNet, léxico sentiWordNet
- 10. Creación de un diccionario simple usando WordNet
- 11. Derby: restricciones
- 12. usando python nltk para encontrar similitud entre dos páginas web?
- 13. ¿Cómo encontrar el "archivo léxico" en Wordnet?
- 14. ¿Detecta nombres propios con WordNet?
- 15. NLTK y detección de idioma
- 16. Modelado de temas en MALLET vs NLTK
- 17. gramática holandesa en python's NLTK
- 18. Tweet Classifier Feature-Selection NLTK
- 19. Problema al cargar el paquete de wordnet en R
- 20. Ayuda con el formato de archivo de datos de WordNet
- 21. Restricciones de reflexión en Silverlight
- 22. restricciones de acceso en Eclipse
- 23. etiquetado personalizado con nltk
- 24. Ejemplos prácticos de uso de NLTK
- 25. Tokenizing unicode usando nltk
- 26. Restricciones de plantilla C++
- 27. Restricciones de carpeta Plone
- 28. Restricciones no de confianza
- 29. MIPS restricciones de memoria?
- 30. ¿Lemmatizar palabras etiquetadas de POS con NLTK?
Gracias por la respuesta completa. Me di cuenta hace un tiempo que no pude encontrar las características de similitud/discriminación en WordNet debido a las razones que mencionaste. – erickrf