Làm thế nào để xử lý các truy vấn ngôn ngữ tự nhiên?


11

Tôi tò mò về truy vấn ngôn ngữ tự nhiên. Stanford có những gì có vẻ là một bộ phần mềm mạnh mẽ để xử lý ngôn ngữ tự nhiên . Tôi cũng đã thấy thư viện Apache OpenNLPKiến trúc chung cho Kỹ thuật văn bản .

Có một lượng sử dụng đáng kinh ngạc để xử lý ngôn ngữ tự nhiên và điều đó làm cho tài liệu của các dự án này khó tiếp thu nhanh chóng.

Bạn có thể đơn giản hóa mọi thứ cho tôi một chút và ở mức cao phác thảo các nhiệm vụ cần thiết để thực hiện một bản dịch cơ bản các câu hỏi đơn giản sang SQL không?

Hình chữ nhật đầu tiên trên biểu đồ dòng chảy của tôi là một chút bí ẩn.

nhập mô tả hình ảnh ở đây

Ví dụ, tôi có thể muốn biết:

How many books were sold last month?

Và tôi muốn dịch nó thành

Select count(*) 
  from sales 
  where 
   item_type='book' and 
   sales_date >= '5/1/2014' and 
   sales_date <= '5/31/2014'

Câu trả lời:


6

Truy vấn ngôn ngữ tự nhiên đặt ra rất nhiều điều phức tạp có thể rất khó để khái quát. Từ cấp độ cao, tôi sẽ bắt đầu với việc cố gắng nghĩ về những thứ dưới dạng danh từ và động từ.

Vì vậy, cho câu: Có bao nhiêu cuốn sách đã được bán trong tháng trước?

Bạn sẽ bắt đầu bằng cách ngắt câu xuống bằng trình phân tích cú pháp sẽ trả về định dạng cây tương tự như sau:

nhập mô tả hình ảnh ở đây

Bạn có thể thấy rằng có một cuốn sách chủ đề, một cụm từ bằng lời nói chỉ ra hành động bán hàng trong quá khứ và sau đó là một cụm danh từ mà bạn có trọng tâm thời gian của một tháng.

Chúng tôi có thể chia nhỏ chủ đề cho công cụ sửa đổi: "bao nhiêu" cho sách và "cuối cùng" trong tháng.

Khi bạn đã ngắt câu, bạn cần ánh xạ các thành phần đó sang ngôn ngữ sql, ví dụ: có bao nhiêu => đếm, sách => sách, đã bán => doanh số, tháng => sales_date (khoảng), v.v.

Cuối cùng, một khi bạn có các yếu tố của ngôn ngữ, bạn chỉ cần đưa ra một bộ quy tắc về cách các thực thể khác nhau tương tác với nhau, khiến bạn phải:

Chọn tính (*) từ doanh số trong đó item_type = 'book' và sales_date> = '5/1/2014' và sales_date <= '5/31/2014'

Đây là mức độ cao mà tôi sẽ bắt đầu, trong khi hầu hết mọi bước tôi đã đề cập là không tầm thường và thực sự lỗ thỏ có thể là vô tận, điều này sẽ cung cấp cho bạn nhiều dấu chấm để kết nối.


1

Biến câu hỏi đơn giản thành câu trả lời không đơn giản .

Công nghệ đầu tiên thực hiện điều này một cách rộng rãi trên toàn công nghệ và chính xác sẽ là một chiến thắng lớn.

Tuy nhiên, có một số vấn đề ngoài kia, lấp đầy khoảng trống bằng "trả lời câu hỏi" với Trí tuệ nhân tạo (ví dụ: IBM Watson và Amazon Alexa). Điều này đòi hỏi phải giải quyết sự phức tạp của ngôn ngữ liên quan đến dữ liệu trong câu hỏi, những gì trong kho lưu trữ dữ liệu và danh từ, động từ và đại từ là gì.

Microsoft mạo hiểm ở đây với Truy vấn tiếng Anh , nhưng sau đó dừng lại. Kueri.me là một nền tảng dựa trên Python làm điều tương tự.

Các ngôn ngữ truy vấn có cấu trúc (SQL) và tương tự, SOQL, MDX, Hive, Impala và các ngôn ngữ mới hơn sẽ sử dụng SQL cũ. Chưa thay thế được bất cứ điều gì, tất cả những phần này đều là những bản sửa lỗi nhỏ cho "Mục tiêu cuối cùng" vĩ đại và nằm trong Trí tuệ nhân tạo (AI), cụ thể là Machine Learning.

Câu hỏi là:

"Máy tính có thể, tìm ra những gì bạn muốn."

Chưa. Phải mất các nhà ngôn ngữ học, nhà toán học, kỹ sư và nhiều hơn nữa để đóng góp miếng bánh của họ để chúng ta có thể thưởng thức một số bánh ngọt thông minh nhân tạo và máy học.


0

Có một số cách tiếp cận để tạo một trình phân tích cú pháp sẽ phân tích thông điệp văn bản đơn giản thành SQL. Ví dụ: bạn có thể tạo một trình phân tích cú pháp dựa trên ngữ pháp và sử dụng thuật toán NLP để xây dựng truy vấn có cấu trúc. Nếu bạn đã có nhiều thư được phân tích cú pháp từ một tên miền (như thương mại điện tử) - bạn có thể thử phương pháp Machine Learning và sử dụng nó để phân tích cú pháp thêm.

Tuy nhiên, tôi nghĩ cách tiếp cận tốt nhất là kết hợp trình phân tích cú pháp dựa trên ngữ pháp để dịch văn bản sang SQL và ML để bổ sung cho ngữ pháp dựa trên quy tắc bằng cách sửa lỗi cú pháp, xóa lỗi chính tả, v.v.

Tìm hiểu thêm về các phương pháp khác nhau ở đây .

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.