2011-09-29 23 views
6

Próbuję napisać algorytm (który, jak zakładam, będzie polegać na technikach przetwarzania języka naturalnego), aby "wypełnić" listę wyszukiwanych terminów. Prawdopodobnie istnieje nazwa tego rodzaju rzeczy, której nie jestem świadomy. Jaki jest ten rodzaj problemu, a jaki algorytm da mi następujące zachowanie?Algorytm NLP do "wypełniania" wyszukiwanych terminów

Wejście:

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" 

wyjściowa:

["Dolphin Watching", "Miami Dolphins"] 

Należy przede wszystkim dowiedzieć się, że jeśli "Delfin" pojawia się w ogóle, to prawie zawsze albo w bigrams "Dolphin Watching" lub „Miami Delfiny ". Preferowane są rozwiązania w Pythonie.

+0

Skąd wiadomo, że Dolphin jest częścią Bigramsów "Dolphin Watching" lub "Miami Dolphins?" Czy dlatego, że oba słowa w każdym bigramie są pisane wielką literą? A może masz inną listę zawierającą pożądane bigramy? –

+0

@RobertHarvey: Dobry algorytm NLP powinien być w stanie przetworzyć [Miami Dolphins] jako termin. To samo dotyczy [Obserwowanie delfinów]. Łatwiej jest, gdy myślisz o tym, jakbyś sformułował każde z tych zdań jako pytanie. P: "Jaką trasę lubisz oglądać?" Odp .: [Trasa [Dolphin Watching]], P: Kto przegrał mecz? Odp .: [The Miami Dolphins]]. Musisz przetworzyć go w drzewo, aby zobaczyć, co należy do czego. W żadnym razie nie jest to łatwy problem, ale możesz uzyskać dokładne wyniki. – mpen

+0

@RobertHarvey Mam listę konkretnych słów, więc wiem, że Dolphin musi gdzieś tam być. – Trindaz

Odpowiedz

6

Zasadniczo należy się zorientować, że jeśli "Dolphin" pojawia się w ogóle, to praktycznie zawsze w bigramsach "Dolphin Watching" lub "Miami Dolphins".

Brzmi jak chcesz określić collocations że Dolphin występuje w. Istnieją różne sposoby na znalezienie kolokacji, najbardziej popularne są obliczyć point-wise mutual information (PMI) pomiędzy warunkami w korpusie, a następnie wybrać warunki z najwyższy PMI dla Dolphin. Możesz zapamiętać PMI z sentiment analysis algorithm, który zasugerowałem wcześniej.

Implementacja różnych metod kolokacji w języku Python jest zawarta w NLTK jako nltk.collocations. Obszar ten jest objęty pewną głębią w Manning and Schütze's FSNLP (1999, ale wciąż aktualny w tym temacie).

0

Użyłem Natural Language Toolkit w mojej klasie NLP na uniwersytecie z przyzwoitym sukcesem. Myślę, że ma kilka taggerów, które mogą pomóc ci określić, które są rzeczowniki, i pomóc ci je sparsować w drzewo. Nie pamiętam wiele, ale zacznę od tego.