C'è un modo per acquisire restrizioni selettive di WordNet (come + animate, + human, ecc.) Dai synset tramite NLTK? Oppure esiste un altro modo per fornire informazioni semantiche su synset? Il più vicino che potessi ottenere erano le relazioni iperimmiche.restrizioni selettive di Wordnet in NLTK
risposta
Dipende da qual è il tuo "restrizioni selectional" o io la chiamerei tratti semantici, perché nella semantica classici, esiste un mondo di concepts
e confrontare tra i concetti dobbiamo trovare
- discriminante caratteristiche (cioè caratteristiche dei concetti che vengono utilizzati per distinguerli l'uno dall'altro) e
- caratteristiche di similarità (cioè caratteristiche dei concetti simili e evidenzia la necessità di differenziarli)
Ad esempio:
Man is [+HUMAN], [+MALE], [+ADULT]
Woman is [+HUMAN], [-MALE], [+ADULT]
[+HUMAN] and [+ADULT] = similarity features
[+-MALE] is the discrimating features
Il problema comune della semantica tradizionali e l'applicazione di questa teoria nella semantica computazionale è la questione della
"C'è un elenco specifico di caratteristiche che possiamo usare confrontare qualsiasi
"Se sì, quali sono le caratteristiche di questo elenco?" concetti? "
(vedi www.acl.ldc.upenn.edu/E/E91/E91-1034.pdf per maggiori dettagli)
Tornando a WordNet, posso suggerire 2 metodi per risolvere il " restrizioni di selezione "
Prima, Controllare gli iperimpiadi per le funzionalità discriminanti, ma prima è necessario decidere quali sono le funzionalità di discriminazione. Per differenziare un animale dagli umani, prendiamo le caratteristiche discriminanti come [+ -umano] e [+ -animale].
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"
In secondo luogo, Verificare la presenza di misure di similarità come @Jacob aveva suggerito.
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"
Si potrebbe provare a utilizzare alcune delle funzioni di similarità con synset raccolti a mano e utilizzarli per filtrare. Ma è essenzialmente lo stesso che seguire l'albero hypernym - afaik tutte le funzioni di similarità wordnet usano la distanza ipernima nei loro calcoli. Inoltre, ci sono molti attributi opzionali di un synset che potrebbe valere la pena di essere esplorati, ma la loro presenza può essere molto incoerente.
- 1. Trovare nomi appropriati usando NLTK WordNet
- 2. Determinazione di Hypernym o Hyponym utilizzando wordnet nltk
- 3. Come integrare "domini WordNet" in DB WordNet?
- 4. Come ottenere tutti gli iponimi di una parola/synset in python nltk e wordnet?
- 5. Come posso stampare solo la parola stessa in un synset di WordNet usando Python NLTK?
- 6. Ottieni nome dal verbo Wordnet
- 7. NLTK Lemmatizzatore WordNet: non dovrebbe lemmatizzare tutte le inflessioni di una parola?
- 8. Wordnet in Objective-C
- 9. È possibile velocizzare Wordnet Lemmatizer?
- 10. restrizioni di accesso in Eclipse
- 11. Come utilizzare Wordnet in SQL
- 12. C'è un corpora di parole inglesi in nltk?
- 13. Dati NLTK non aggiornati - Python 3.4
- 14. Utilizzo di NLTK e WordNet; come convertire un verbo semplice in una forma participio presente, passata o passata?
- 15. Struttura ad albero di Wordnet
- 16. restrizioni di tipo unboxed
- 17. WordNet ha "livelli"? (PNL)
- 18. WordNet Java API
- 19. Come si calcola la distanza del percorso più breve (geodetica) tra due aggettivi in WordNet usando Python NLTK?
- 20. Restrizioni di getResponseHeader() di XMLHttpRequest?
- 21. D3 rappresentazione grafica di porzioni selettive del set di dati
- 22. Unione di righe di codice selettive utilizzando Git?
- 23. wordnet lemmatization e pos tagging in python
- 24. Entity Framework 4 proprietà di carico lazy selettive
- 25. Prestazioni NLTK
- 26. NLTK multilingue per tagging POS e Lemmatizer
- 27. Restrizioni stringa preservazione Regex
- 28. UIGestureRimascie restrizioni movimenti
- 29. CSV restrizioni prima cella
- 30. Ricerca di parole da Wordnet separate da una correzione fissa Distanza da una determinata parola
Grazie per la risposta completa. Mi sono reso conto qualche tempo fa che non riuscivo a trovare le somiglianze/caratteristiche discriminanti in WordNet a causa dei motivi che hai menzionato. – erickrf