Trích xuất thông tin từ câu


11

Tôi đang tạo một chatbot đơn giản. Tôi muốn có được thông tin từ phản hồi của người dùng. Một kịch bản ví dụ:

Bot : Hi, what is your name?
User: My name is Edwin.

Tôi muốn trích xuất tên Edwin từ câu. Tuy nhiên, người dùng có thể phản hồi theo nhiều cách khác nhau như

User: Edwin is my name.
User: I am Edwin.
User: Edwin. 

Tôi đã cố gắng dựa vào mối quan hệ phụ thuộc giữa các từ nhưng kết quả không được tốt.

Bất cứ ý tưởng về kỹ thuật tôi có thể sử dụng để giải quyết vấn đề này?

[CẬP NHẬT]

Tôi đã thử nghiệm với nhận dạng thực thể được đặt tên cùng với một phần của trình phát thẻ và trình phân tích cú pháp. Tôi phát hiện ra rằng hầu hết các mô hình được đào tạo theo cách mà ký tự đầu tiên của thực thể cho tên người hoặc danh từ thích hợp phải là chữ hoa. Điều này có thể đúng với tài liệu thông thường, nhưng nó không liên quan đến một chatbot. Ví dụ

User: my name is edwin.

Hầu hết NER không nhận ra điều này.


Điều này giải thích cách các bot trò chuyện hiện đại được xây dựng, nhưng tôi sẽ không gọi nó là đơn giản. Bạn có thể tìm hiểu thêm bằng cách tìm kiếm "trả lời câu hỏi".
Emre

Tôi rất thích cách mọi người đặt câu hỏi và nhận câu trả lời đánh dấu một câu trả lời là chấp nhận được: P
chewpakabra

Câu trả lời:


7

Bạn có thể có thể sử dụng kết hợp Phân tích thực thể được đặt tên và Phân tích tổng hợp - trong khi từ Edwin chắc chắn được đưa ra, hãy tưởng tượng một tình huống có tên là Edward Philip Martel . NER phát hiện mỗi từ là một thực thể riêng biệt (do đó có 3 thực thể khác nhau) - do đó, dù sao bạn cũng sẽ phải xâu chuỗi chúng lại với nhau dựa trên một số logic. Hơn nữa, trong trường hợp có nhiều tên, việc phân định có thể trở nên khó khăn hơn (ví dụ: John & Ramsey đã ăn tối tại Winterfell ).

Đây là nơi phân tích cú pháp câu cũng có ích (giả sử rằng người dùng cuối nhập một câu tương đối mạch lạc và phù hợp - nếu tiếng lóng và các dạng văn bản ngắn được sử dụng, ngay cả Stanford NLP cũng chỉ có thể giúp đến một mức độ nhất định).

Một cách để tận dụng phân tích cú pháp / phân tích cú pháp và NER là trong các ví dụ sau -

 1. User: Edwin is my name.
 2. User: I am Edwin.
 3. User: My name is Edwin.

Trong mỗi trường hợp (cũng như trường hợp chung), Tên thực thể (Danh từ / Danh từ riêng) được liên kết gần với Động từ. Do đó, nếu trước tiên bạn phân tích câu để xác định động từ và sau đó áp dụng NER cho các từ xung quanh (+/- 1 hoặc 2), bạn có thể có một cách tương đối hợp lý để giải quyết vấn đề. Giải pháp này sẽ phụ thuộc chủ yếu vào các quy tắc cú pháp bạn tạo để xác định NER cũng như cửa sổ xung quanh các động từ.


2
Bạn có thể sẽ thực hiện một 'máy tự động hữu hạn không xác định', trong đó mỗi câu là một phản hồi mà một mẫu chấp nhận. Một số ngữ pháp được thực hiện trên một cái gì đó như thế này. (NLP / Ngữ pháp). Nếu bạn cần làm thế nào để làm điều này, hãy nhìn vào khung stanfordnlp.github.io/CoreNLP
Intruso 7/11/2016

5

Bạn nên sử dụng Nhận dạng thực thể được đặt tên, ví dụ từ NLTK, http://www.nltk.org/book/ch07.html <- bạn có thể tìm thấy một ví dụ sử dụng ở đó. Nó sẽ làm việc cho trường hợp được mô tả của bạn khá tốt.


4

Điều này có thể dễ dàng thực hiện với CRF s. Bạn có thể sử dụng mã hóa BIO để gắn thẻ câu của bạn. Sau đó chuyển nó cho CRF. Bạn chỉ cần tạo một vài câu được gắn thẻ cho mục đích đào tạo như sau,

 I am Edwin.
 O O  B-NAME

 You can call me Alfred
 O   O    O    O B-NAME

 My name is  Edwin   thomas
 O  O     O  B-NAME  I-NAME

CRFsuiteCRF ++ là một số triển khai tốt. CRFsuite có một trình bao bọc python gọi là pycrfsuite , khá dễ thực hiện. Kiểm tra sổ ghi chép ipython này hoặc đoạn mã này trên github để biết cách thực hiện NER từ đầu đến cuối.

kiểm tra dự án bot trò chuyện mã nguồn mở này trên github với NER và Phân loại ý định được viết bằng python. Họ có một giao diện người dùng đào tạo dễ sử dụng, nơi bạn có thể đào tạo bot của mình để trích xuất thông tin từ các câu.


0

Để thực hiện các tác vụ như vậy với độ chính xác cao, tôi khuyên bạn nên xây dựng mô hình LSTM với các từ nhúng với sự trợ giúp của word2vec. Các LSTM có thể giúp lấy thông tin từ câu cũng như dự đoán ký tự hoặc từ tiếp theo được cung cấp một tập hợp các từ đã có trong câu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.