2012-07-04 29 views
35

Tôi đang cố gắng trích xuất các thực thể được đặt tên từ văn bản của tôi bằng NLTK. Tôi thấy rằng NLTK NER không phải là rất chính xác cho mục đích của tôi và tôi muốn thêm một số thẻ của riêng tôi nữa. Tôi đã cố gắng tìm cách đào tạo NER của riêng mình, nhưng dường như tôi không thể tìm được nguồn tài nguyên phù hợp. Tôi có một vài câu hỏi liên quan đến NLTK-NLTK Công nhận thực thể được đặt tên với dữ liệu tùy chỉnh

  1. Tôi có thể sử dụng dữ liệu của riêng tôi để đào tạo một Entity Recognizer tên trong NLTK?
  2. Nếu tôi có thể đào tạo bằng cách sử dụng dữ liệu của riêng mình, tệp named_entity.py có bị sửa đổi không?
  3. Định dạng tệp đầu vào phải nằm trong IOB, ví dụ: Eric NNP B-PERSON?
  4. Có tài nguyên nào - ngoài sách dạy nấu ăn nltk và nlp bằng python mà tôi có thể sử dụng không?

Tôi thực sự sẽ đánh giá cao sự giúp đỡ trong vấn đề này

Trả lời

18

Bạn có cam kết sử dụng NLTK/Python? Tôi đã gặp phải các vấn đề tương tự như bạn, và có kết quả tốt hơn nhiều khi sử dụng trình nhận dạng thực thể có tên là Stanford: http://nlp.stanford.edu/software/CRF-NER.shtml. Quá trình đào tạo trình phân loại bằng cách sử dụng dữ liệu của riêng bạn được viết rất rõ trong Câu hỏi thường gặp.

Nếu bạn thực sự cần sử dụng NLTK, tôi sẽ nhấn lên danh sách gửi thư để được một số lời khuyên từ những người dùng khác: http://groups.google.com/group/nltk-users.

Hy vọng điều này sẽ hữu ích!

+1

Duyệt qua trang SNER, tôi thấy rằng thậm chí có giao diện python [ở đây] (https://github.com/dat/pyner). Không chắc chắn nó trưởng thành như thế nào, nhưng nó có thể hữu ích. – senderle

+0

Câu hỏi này xuất hiện rất nhiều trong một tìm kiếm để cải thiện nltk được gọi là nhận dạng đối tượng, nhưng nói 'lol sử dụng cái gì khác' không phải là thông tin. – blueblank

+5

Tôi đã có cùng một vấn đề và chia sẻ những gì làm việc cho tôi. Xin lỗi nếu điều đó khiến bạn thất vọng: ( – jjdubs

10

Bạn có thể dễ dàng sử dụng NER của Stanford cùng với nltk. Các kịch bản python là như

from nltk.tag.stanford import NERTagger 
import os 
java_path = "/Java/jdk1.8.0_45/bin/java.exe" 
os.environ['JAVAHOME'] = java_path 
st = NERTagger('../ner-model.ser.gz','../stanford-ner.jar') 
tagging = st.tag(text.split()) 

Đào tạo dữ liệu của riêng bạn và để tạo ra một mô hình mà bạn có thể tham khảo các câu hỏi đầu tiên trên Stanford NER FAQ.

Liên kết là http://nlp.stanford.edu/software/crf-faq.shtml

0

Tôi cũng đã có vấn đề này, nhưng tôi cố gắng làm việc nó ra. Bạn có thể sử dụng dữ liệu đào tạo của riêng mình. Tôi đã ghi lại các yêu cầu/bước chính cho điều này trong số github repository của mình.

Tôi đã sử dụng NLTK-trainer, do đó, về cơ bản bạn phải lấy dữ liệu đào tạo ở định dạng đúng (thẻ NNP B mã thông báo) và chạy tập lệnh đào tạo. Kiểm tra kho lưu trữ của tôi để biết thêm thông tin.

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