2010-11-20 47 views
5

Tôi là người mới dùng NLP và cố gắng tìm ra cách Trình nhận dạng đối tượng được đặt tên chú thích các thực thể được đặt tên. Tôi đang thử nghiệm với bộ công cụ Stanford NER. Khi tôi sử dụng NER trên các tập dữ liệu chính thức hơn, nơi tất cả các quy ước đặt tên được theo sau để đại diện cho các thực thể được đặt tên như trong các tin tức mới hoặc các blog tin tức, NER chú thích các thực thể một cách chính xác. Tuy nhiên khi tôi chạy NER với các tập dữ liệu không chính thức như twitter, nơi các thực thể được đặt tên có thể không được viết hoa như lẽ ra phải là, NER không chú thích các thực thể. Trình phân loại mà tôi đang sử dụng là một phân lớp tuần tự 3-CRF. Ai có thể cho tôi biết làm thế nào tôi có thể làm cho NER nhận ra các thực thể trường hợp thấp hơn? Bất kỳ đề xuất hữu ích về cách hack NER và nơi cải tiến này sẽ được thực hiện được đánh giá cao. Cảm ơn trước cho tất cả sự giúp đỡ của bạn.Bộ công cụ Stanford NER - nhận dạng đối tượng chữ thường

+0

Bạn có đào tạo về tweets được gắn thẻ, hoặc là bạn cố gắng sử dụng một mô hình đã tồn tại trước đó có thể đã được đào tạo về văn bản newswire? –

Trả lời

1

Tôi nghĩ rằng Twitter sẽ rất khó khăn cho ứng dụng này. Chữ hoa là một đầu mối lớn, như bạn nói, thường bị thiếu trên Twitter. Một kiểm tra từ điển để loại bỏ các từ tiếng Anh hợp lệ là hạn chế sử dụng bởi vì các văn bản Twitter bao gồm một số lượng lớn các chữ viết tắt và chúng thường là duy nhất.

Có lẽ PArt của gắn thẻ thoại và phân tích tần suất có thể được sử dụng để giúp cải thiện việc phát hiện danh từ thích hợp?

+2

Cảm ơn bạn đã trả lời. Những gì tôi đang lên kế hoạch để làm là sử dụng bộ tính năng mới bao gồm các thực thể cả chữ hoa và chữ thường để tạo ra trình xử lý mã vạch của NLP Stanford và sau đó sử dụng Stanford NER để chú giải nó. Nó sẽ làm việc như tôi tin nhưng bằng cách nào đó sau khi tôi nhận được tất cả những thứ làm việc và nhận serializer và chạy stanford NER, nó đặt tên tất cả các thực thể là PERSON mặc dù tôi chỉ có một thực thể được chú thích là PERS trong việc nhập dữ liệu. – Anu

+1

Gắn thẻ POS sẽ tốt hơn tôi giả sử, nhưng đã quá xa sử dụng Stanford NER và tôi tò mò muốn làm việc trên nó để có được nó chạy cho chữ thường quá. – Anu

4

Tôi e rằng không có cách nào dễ dàng để có được các mô hình được đào tạo mà chúng tôi phân phối để bỏ qua thông tin về tình huống khi chạy. Vì vậy, có, họ thường sẽ chỉ ghi nhãn tên viết hoa. Nó sẽ có thể đào tạo một mô hình không vỏ, mà sẽ làm việc hợp lý (nhưng không phải là tốt trên văn bản cased, vì trường hợp là một đầu mối lớn bằng tiếng Anh (nhưng không phải bằng tiếng Đức, Trung Quốc, Ả Rập, vv.)

+3

Câu trả lời được sửa đổi: Hiện tại, chúng tôi đang phân phối các mô hình không nhân quả cho một số công cụ của chúng tôi, công cụ này sẽ hoạt động tốt hơn trên văn bản chưa được xử lý. (Mặc dù không phải là cũng như chạy mô hình cased trên văn bản cased, kể từ khi viết hoa không cung cấp thông tin hữu ích bằng tiếng Anh!) Bạn có thể tải chúng một cách riêng biệt từ đây: http://nlp.stanford.edu/software/CRF-NER.shtml. –

+0

Và bây giờ chúng ta có một truecaser. Bây giờ bạn có thể tìm thấy câu trả lời chi tiết hơn cho câu hỏi này tại đây: https://stackoverflow.com/questions/45097507/how-to-recognize-a-named-entity-that-is-lowcase-such-as-kobe- bryant-by-corenlp/45122541 # 45122541 –

2

Cùng Nếu bạn đang sử dụng một trình phân loại dựa trên tính năng, tôi chắc chắn sẽ thêm vào 100-200 bản phổ biến nhất 3-4 chữ cái trong tên của mọi người hoặc tạo một gazzeteer theo một tính năng được công nhận. bị ràng buộc để hiển thị khá nhiều trong tên cá nhân không hiển thị thường xuyên trong các loại từ khác, như "eli".

1

Câu hỏi này hơi cũ, nhưng ai đó có thể hưởng lợi từ điều này ý tưởng.

Một cách để đào tạo một trình phân loại cho trường hợp thấp hơn là chạy trình phân loại chữ hoa bạn đã có đối với một bộ dữ liệu lớn tiếng Anh thích hợp, sau đó xử lý văn bản được gắn thẻ đó để loại bỏ trường hợp. Sau đó, bạn có một kho dữ liệu được gắn thẻ mà bạn có thể sử dụng để đào tạo một trình phân loại mới. Trình phân loại mới này sẽ không hoàn hảo đối với Twitter vì tính đặc thù của các tweet, nhưng đó là một cách nhanh chóng để khởi động nó.

4

Tôi biết đó là một chủ đề cũ nhưng hy vọng nó sẽ giúp ai đó. Như manning christopher đã trả lời, cách để có được chữ thường được phát hiện là thay thế english.muc.7class.distsim.crf.ser.gz bằng english.muc.7class.caseless.distsim.crf.ser.gz mà bạn có thể nhận được khi bạn giải nén tập tin nlp caseless jar cốt lõi.

Ví dụ, trong file python của tôi, tôi đã giữ tất cả mọi thứ như nhau ngoại trừ chuyển sang các tập tin mới và nó hoạt động hoàn hảo (tốt, phần lớn thời gian)

st = NERTagger('/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/classifiers/english.muc.7class.caseless.distsim.crf.ser.gz', '/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/stanford-ner.jar') 
Các vấn đề liên quan