2013-06-04 31 views
5

Vì vậy, tôi đã tự hỏi nếu có ai có ý tưởng làm thế nào để kết hợp nhiều thuật ngữ để tạo ra một thuật ngữ duy nhất trong các thẻ trong NLTK..Làm cách nào để thêm các từ ghép vào trình gắn thẻ trong NLTK?

Ví dụ, khi tôi làm:

nltk.pos_tag(nltk.word_tokenize('Apple Incorporated is the largest company')) 

Nó mang lại cho tôi:

[('Apple', 'NNP'), ('Incorporated', 'NNP'), ('is', 'VBZ'), ('the', 'DT'), ('largest', 'JJS'), ('company', 'NN')] 

Làm thế nào để làm cho nó đặt 'Apple' và 'Thành lập' Cùng là ('Apple Incorporated','NNP')

+1

bạn sẽ cần một trình phân tích cú pháp/phân tích cú pháp và sau đó concat các khối/cụm từ với '_', sau đó flatten cấu trúc thành tuples một lần nữa. – alvas

Trả lời

0

Bạn có thể thử xem nltk.RegexParser. Nó cho phép bạn tách một phần nội dung được gắn thẻ giọng nói dựa trên cụm từ thông dụng. Trong ví dụ của bạn, bạn có thể làm một cái gì đó giống như

pattern = "NP:{<NN|NNP|NNS|NNPS>+}" 
c = nltk.RegexpParser(p) 
t = c.parse(nltk.pos_tag(nltk.word_tokenize("Apple Incorporated is the largest company"))) 
print t 

Điều này sẽ cung cấp cho bạn:

Tree('S', [Tree('NP', [('Apple', 'NNP'), ('Incorporated', 'NNP')]), ('is', 'VBZ'), ('the', 'DT'), ('largest', 'JJS'), Tree('NP', [('company', 'NN')])]) 
0

Mã này được thực hiện chính xác những gì nó là vụ phải làm. Nó là thêm một phần của thẻ Speech vào thẻ. 'Apple Incorporated' không phải là một mã thông báo duy nhất. Nó là hai thẻ riêng biệt, và như vậy không thể có một thẻ POS duy nhất được áp dụng cho nó. Đây là hành vi đúng.

Tôi tự hỏi nếu bạn đang cố gắng sử dụng công cụ sai cho công việc. Bạn đang cố gắng làm gì/Tại sao bạn lại cố gắng làm điều đó? Có lẽ bạn quan tâm đến việc xác định collocations hơn là gắn thẻ POS? Bạn có thể xem tại đây: collocations module

+0

Tôi đang cố gắng tạo một chương trình lấy từng loại từ và thực hiện một chức năng trên chúng trên văn bản. Ví dụ: nếu thẻ là 'Corp' thì thực hiện chức năng nhất định. Tôi đã nghĩ rằng tôi có thể thay thế các thẻ và bằng cách nào đó làm điều đó bằng tay, xem xét rằng tôi không chắc chắn làm thế nào để làm điều đó với nltk, nhưng tôi không biết làm thế nào tôi sẽ làm điều đó một trong hai! Về cơ bản, nó nhận ra loại từ đó là gì và thực hiện một chức năng trên đó. Bất kỳ giúp đỡ? – user2403500

+0

Tôi hiểu rằng đây là thủ tục bình thường, nhưng tôi đã tự hỏi nếu bạn biết làm thế nào tôi có thể thay thế ('Apple,' NNP '), (' Corporation ',' NNP ') với (' Apple Corporation ',' Corp ') nếu 'Tập đoàn Apple' trong các công ty. – user2403500

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