Tengo un desplazamiento del sintonizador de WordNet (por ejemplo id="n#05576222"
). Dado este desplazamiento, ¿cómo puedo obtener el synset usando Python?¿Cómo obtener el sintonizador de WordNet dado un ID de desplazamiento?
Respuesta
Para NTLK 3.2.3 o posterior, consulte la respuesta de donners45.
Para versiones anteriores de NLTK:
No hay ningún método integrado en el NLTK pero se puede usar esto:
from nltk.corpus import wordnet
syns = list(wordnet.all_synsets())
offsets_list = [(s.offset(), s) for s in syns]
offsets_dict = dict(offsets_list)
offsets_dict[14204095]
>>> Synset('heatstroke.n.01')
A continuación, puede conservar en vinagre el diccionario y cargarlo cada vez lo necesita.
Para versiones NLTK antes de 3.0, reemplace la línea
offsets_list = [(s.offset(), s) for s in syns]
con
offsets_list = [(s.offset, s) for s in syns]
desde antes de NLTK 3,0 offset
fue un atributo en lugar de un método.
Además de usar NLTK, otra opción sería usar el archivo .tab del Open Multilingual WordNet
http://compling.hss.ntu.edu.sg/omw/ para Princeton WordNet. Normalmente he utilizado la receta a continuación para acceder a wordnet como un diccionario con compensados como la clave y ;
cadenas delimitadas Como valores:
# Gets first instance of matching key given a value and a dictionary.
def getKey(dic, value):
return [k for k,v.split(";") in dic.items() if v in value]
# Read Open Multi WN's .tab file
def readWNfile(wnfile, option="ss"):
reader = codecs.open(wnfile, "r", "utf8").readlines()
wn = {}
for l in reader:
if l[0] == "#": continue
if option=="ss":
k = l.split("\t")[0] #ss as key
v = l.split("\t")[2][:-1] #word
else:
v = l.split("\t")[0] #ss as value
k = l.split("\t")[2][:-1] #word as key
try:
temp = wn[k]
wn[k] = temp + ";" + v
except KeyError:
wn[k] = v
return wn
princetonWN = readWNfile('wn-data-eng.tab')
offset = "n#05576222"
offset = offset.split('#')[1]+'-'+ offset.split('#')[0]
print princetonWN.split(";")
print getKey('heatstroke')
A partir de NLTK 3.2.3, hay un método público para hacer esto:
wordnet.synset_from_pos_and_offset(pos, offset)
en versiones anteriores se puede utilizar:
wordnet._synset_from_pos_and_offset(pos, offset)
Esto devuelve un synset basado en su punto de venta y offest ID. Creo que este método solo está disponible en NLTK 3.0, pero no estoy seguro.
Ejemplo:
from nltk.corpus import wordnet as wn
wn._synset_from_pos_and_offset('n',4543158)
>> Synset('wagon.n.01')
Puede utilizar of2ss()
, por ejemplo:
from nltk.corpus import wordnet as wn
syn = wn.of2ss('01580050a')
volverá Synset('necessary.a.01')
- 1. jQuery dado ID de entrada, obtener texto de etiqueta
- 2. ¿Cómo obtener el Thread ID de Android?
- 3. Ayuda con el formato de archivo de datos de WordNet
- 4. Cómo obtener el carácter para un valor de ascii dado
- 5. ¿Obtener el ID de un formulario?
- 6. Herramienta para copiar el archivo del desplazamiento 'x' (inicial) dado al desplazamiento 'y' (final) 'dado'
- 7. ¿Cómo obtener UIView dado un CGPoint?
- 8. Servidor SQL: Cómo obtener todos los registros secundarios dado un id principal en una tabla autorreferencial
- 9. ¿Cómo obtener el ID de proceso actual?
- 10. ¿Cómo obtener un inflador de diseño dado un contexto?
- 11. Cómo obtener el desplazamiento Y actual de un ScrollView
- 12. ¿Cómo encontrar la Id. De fila de datagridview, dado un valor de fila?
- 13. ¿Cómo encontrar el "archivo léxico" en Wordnet?
- 14. Creación de un diccionario simple usando WordNet
- 15. ¿Cómo obtener el tamaño del archivo dado un camino?
- 16. Buscar todos los hilos de un proceso dado proceso id
- 17. Dado un nombre de usuario de Facebook, ¿cómo obtengo el ID del perfil?
- 18. Cómo obtener inflexiones para una palabra usando Wordnet
- 19. Cómo obtener el ID de la base de datos desde un Id. De XML
- 20. cómo obtener el ancho interno de un elemento en jquery SIN la barra de desplazamiento
- 21. ¿Hay un script del sintonizador de Apache como mysqltuner.pl?
- 22. Cómo usar Wordnet en SQL
- 23. obtener el control por ID de cliente
- 24. jquery obtener el número de id
- 25. ¿Cómo obtener el número de días de un mes dado el mes y año en particular?
- 26. Cómo obtener el objeto SPUser utilizando el ID de usuario (nombre_dominio \ ID de usuario)
- 27. ¿WordNet tiene "niveles"? (PNL)
- 28. Cómo obtener el ID del artículo en un controlador onItemClick
- 29. Obtener el ID del hilo
- 30. Cómo obtener ID de Tweet desde el evento de tweet
Interesante, esto arroja un error de clave con NLTK 3.0 – duhaime
'offset' es ahora un método. Pruebe esto en su lugar: 'offsets_dict = {s.offset(): s para s en wn.all_synsets()}' – Omer
* "No hay un método incorporado en el NLTK" * - ¡ahora existe! Ver la respuesta de donners45; este es obsoleto –