2011-07-13 21 views
5

Si mira el original Wordnet search y selecciona "Opciones de visualización: Mostrar información de archivo léxico", verá una clasificación de palabras extremadamente útil llamada archivo léxico. Por ejemplo, para "llenar" tenemos:¿Cómo encontrar el "archivo léxico" en Wordnet?

<noun.substance>S: (n) filling, fill (any material that fills a space or container) 
    <noun.process>S: (n) filling (flow into something (as a container)) 
    <noun.food>S: (n) filling (a food mixture used to fill pastry or sandwiches etc.) 
    <noun.artifact>S: (n) woof, weft, filling, pick (the yarn woven across the warp yarn in weaving) 
    <noun.artifact>S: (n) filling ((dentistry) a dental appliance consisting of ...) 
    <noun.act>S: (n) filling (the act of filling something) 

Lo primero que entre paréntesis es el "archivo de léxico". Por desgracia no he podido encontrar un SPARQL endpoint que proporciona esta información

  • El latest RDF translation de Wordnet 3,0 puntos a dos cosas:

  • Talis SPARQL endpoint. Por ejemplo, utilizar esta consulta para comprobar que no hay tal información:

    DESCRIBE <http://purl.org/vocabularies/princeton/wn30/synset-chair-noun-1>

  • W3C's mapping description. El Apéndice D "Detalles de conversión" describe algo útil: wn:classifiedByTopic. Pero no es lo mismo que archivo léxico, y está bastante incompleto. Por ejemplo, "silla" no tiene nada, mientras que uno de los sentidos de "terminación" es en el tema "fútbol americano"

    DESCRIBE <http://purl.org/vocabularies/princeton/wn30/synset-completion-noun-1> ->

    <j.1:classifiedByTopic rdf:resource="http://purl.org/vocabularies/princeton/wn30/synset-American_football-noun-1"/>

La pregunta: ¿hay un público API de consulta de Wordnet, o una base de datos, que proporciona la información del archivo léxico ?

Respuesta

1

Se puede hacer a través MIT JWI (MIT Java Wordnet Interface) una API de Java para consultar Wordnet. Hay un tema en this link que muestra cómo implementar una clase de Java para acceder lexicográfico

+0

Por cierto, si usted está interesado en esos lexicographics, buscar en la web para los dos estudios de Ciaramita y Johnson y Ciaramita y Altun, que Describer la propuesta de Wordnet Supersenses (que son los lexicográficos) –

3

No creo que pueda encontrarlo en la Representación RDF/OWL de WordNet. Sin embargo, está en la distribución de WordNet: dict/lexnames. Aquí está el contenido del archivo como de WordNet 3.0:.

00  adj.all 3 
01  adj.pert  3 
02  adv.all 4 
03  noun.Tops  1 
04  noun.act  1 
05  noun.animal  1 
06  noun.artifact 1 
07  noun.attribute 1 
08  noun.body  1 
09  noun.cognition 1 
10  noun.communication  1 
11  noun.event  1 
12  noun.feeling 1 
13  noun.food  1 
14  noun.group  1 
15  noun.location 1 
16  noun.motive  1 
17  noun.object  1 
18  noun.person  1 
19  noun.phenomenon 1 
20  noun.plant  1 
21  noun.possession 1 
22  noun.process 1 
23  noun.quantity 1 
24  noun.relation 1 
25  noun.shape  1 
26  noun.state  1 
27  noun.substance 1 
28  noun.time  1 
29  verb.body  2 
30  verb.change  2 
31  verb.cognition 2 
32  verb.communication  2 
33  verb.competition  2 
34  verb.consumption  2 
35  verb.contact 2 
36  verb.creation 2 
37  verb.emotion 2 
38  verb.motion  2 
39  verb.perception 2 
40  verb.possession 2 
41  verb.social  2 
42  verb.stative 2 
43  verb.weather 2 
44  adj.ppl 3 

Para cada entrada de dict/data *, el segundo número es la información de archivo de léxico. Por ejemplo, esta entrada de relleno contiene el número 13, que es sustantivo.food.

07883031 13 n 01 filling 0 002 @ 07882497 n 0000 ~ 07883156 n 0000 | a food mixture used to fill pastry or sandwiches etc. 
1

Esto es lo que funcionó para mí,

Synset[] synsets = database.getSynsets(wordStr); 

ReferenceSynset referenceSynset = (ReferenceSynset) synsets[i]; 

int lexicalCode =referenceSynset.getLexicalFileNumber(); 

A continuación, utilice la tabla anterior para deducir "lexnames" por ejemplo, noun.time

1

Uso de la interfaz de Python NLTK:

from nltk.corpus import wordnet as wn 

for synset in wn.synsets('can'): 
    print synset.lexname 
Cuestiones relacionadas