2011-09-29 47 views
6

Tôi đang cố viết một thuật toán (mà tôi giả định sẽ dựa vào các kỹ thuật xử lý ngôn ngữ tự nhiên) để 'điền vào' danh sách cụm từ tìm kiếm. Có lẽ có một cái tên cho loại thứ mà tôi không biết. Loại vấn đề này được gọi là gì và loại thuật toán nào sẽ cho tôi hành vi sau đây?Thuật toán NLP để 'điền' các cụm từ tìm kiếm

Input:

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" 

Output:

["Dolphin Watching", "Miami Dolphins"] 

Nó cơ bản nên hình dung ra rằng nếu "Dolphin" xuất hiện ở tất cả, đó là hầu như luôn luôn hoặc trong bigrams "Dolphin Watching" hoặc "Miami Cá heo ". Các giải pháp trong Python được ưu tiên.

+0

Làm thế nào để bạn biết rằng Dolphin là một phần của bigrams "Dolphin Watching" hoặc "Miami Dolphins?" Có phải vì cả hai từ trong mỗi bigram đều được viết hoa? Hay bạn có một danh sách khác chứa các bigrams mong muốn? –

+0

@RobertHarvey: Thuật toán NLP tốt sẽ có thể phân tích [Miami Dolphins] làm thuật ngữ. Tương tự với [Dolphin Watching]. Nó dễ dàng hơn khi bạn nghĩ về nó như thể bạn đã hình thành từng cụm từ như một câu hỏi. Q: "Bạn thích xem tour nào?" A: [The [Dolphin Watching] tour], Q: Ai mất trò chơi? A: [The Miami Dolphins]]. Bạn phải phân tích nó thành một cái cây để xem cái gì thuộc về cái gì. Không phải là một vấn đề dễ dàng bởi bất kỳ phương tiện ... nhưng bạn có thể nhận được kết quả phần nào chính xác. – mpen

+0

@RobertHarvey Tôi có một danh sách các từ cụ thể để tôi biết Dolphin phải ở trong đó một nơi nào đó. – Trindaz

Trả lời

6

Về cơ bản, nên tìm hiểu rằng nếu "Dolphin" xuất hiện, hầu như luôn luôn là trong "Big Watch" Dolphin hoặc "Miami Dolphins".

Âm thanh như bạn muốn xác định collocations rằng Dolphin xảy ra trong. Có nhiều phương pháp khác nhau để phát hiện sắp xếp thứ tự, phổ biến nhất là để tính toán point-wise mutual information (PMI) giữa các điều khoản trong corpus của bạn, sau đó chọn các điều khoản với PMI cao nhất cho Dolphin. Bạn có thể nhớ PMI từ sentiment analysis algorithm mà tôi đã đề xuất trước đó.

Việc triển khai Python của các phương pháp tìm kiếm sắp xếp khác nhau được bao gồm trong NLTK là nltk.collocations. Khu vực này được bao phủ trong một số độ sâu trong Manning and Schütze's FSNLP (1999, nhưng vẫn còn hiện tại cho chủ đề này).

0

Tôi đã sử dụng Natural Language Toolkit trong lớp NLP của mình ở trường đại học với thành công tốt. Tôi nghĩ rằng nó có một số taggers có thể giúp bạn xác định đó là danh từ, và giúp bạn phân tích nó thành một cây. Tôi không nhớ nhiều, nhưng tôi sẽ bắt đầu ở đó.

Các vấn đề liên quan