2011-09-29 18 views
6

Sto provando a scrivere un algoritmo (che presumo si baserà sulle tecniche di elaborazione del linguaggio naturale) per "compilare" un elenco di termini di ricerca. Probabilmente c'è un nome per questo genere di cose di cui non sono a conoscenza. Come si chiama questo tipo di problema e quale tipo di algoritmo mi darà il seguente comportamento?Algoritmo NLP per compilare i termini di ricerca

ingresso:

docs = [ 
    "I bought a ticket to the Dolphin Watching cruise", 
    "I enjoyed the Dolphin Watching tour", 
    "The Miami Dolphins lost again!", 
    "It was good going to that Miami Dolphins game" 
    ], 
    search_term = "Dolphin" 

uscita:

["Dolphin Watching", "Miami Dolphins"] 

Dovrebbe fondamentalmente capire che se "Dolphin" appare a tutti, è praticamente sempre o nelle bigrammi "Dolphin Watching" o "Miami delfini". Le soluzioni in Python sono preferite.

+0

Come fai a sapere che Dolphin fa parte dei bigram "Dolphin Watching" o "Miami Dolphins?" È perché entrambe le parole in ogni bigram sono in maiuscolo? O hai un'altra lista contenente i bigram desiderati? –

+0

@RobertHarvey: un buon algoritmo NLP dovrebbe essere in grado di analizzare [Miami Dolphins] come un termine. Lo stesso con [Dolphin Watching]. È più facile quando ci pensi come se formassi ognuna delle frasi come una domanda. Q: "A quale tour ti è piaciuto guardare?" A: [Il tour [Dolphin Watching]], Q: Chi ha perso la partita? A: [The [Miami Dolphins]]. Devi analizzarlo in un albero per vedere cosa appartiene a cosa. Non è un problema facile con qualsiasi mezzo ... ma puoi ottenere risultati un po 'precisi. – mpen

+0

@RobertHarvey Ho un elenco di parole specifiche, quindi so che Dolphin deve essere lì da qualche parte. – Trindaz

risposta

6

In pratica, è necessario capire che se "Dolphin" appare, è praticamente sempre nei bigram "Dolphin Watching" o "Miami Dolphins".

Suona come si desidera determinare la collocations che Dolphin si verifica in. Ci sono vari metodi per trovare collocazione, il più popolare è per calcolare point-wise mutual information (PMI) tra i termini nel corpus, quindi selezionare i termini con la PMI più alta per Dolphin. Si potrebbe ricordare PMI dal sentiment analysis algorithm che ho suggerito in precedenza.

Un'implementazione Python di vari metodi di ricerca di collocazione è inclusa in NLTK come nltk.collocations. L'area è coperta in una certa profondità in Manning and Schütze's FSNLP (1999, ma ancora corrente per questo argomento).

0

Ho usato il Natural Language Toolkit nella mia classe NLP in università con discreto successo. Penso che abbia alcuni tagger che possono aiutarti a determinare quali sono i sostantivi e aiutarti ad analizzarli in un albero. Non ricordo molto, ma inizierei da lì.

Problemi correlati