Thiết lập dự án
Tôi thực hiện theo công ty sau để thiết lập bộ giọng nói của mình, bao gồm thông tin đăng nhập API cho Google Voice để nhắn tin.
Scraping dữ liệu
Đây là nơi tôi lấy tất cả dữ liệu của mình và tôi sử dụng Beautiful4 để truy xuất thông tin cần thiết như Ngày, Số lượng, Sản phẩm, Khách hàng và Dayref để lưu trữ vào khung dữ liệu gấu trúc. Tôi cũng làm sạch dữ liệu ở đây bằng cách che tất cả các ô DayRef hiển thị từ '# N / A' thành 'hôm qua', viết thường tất cả các chữ cái và loại bỏ dấu ngoặc đơn.
Tất cả dữ liệu được lưu trữ trong một khung dữ liệu Đơn hàng.
Chuyển giọng nói thành văn bản
Tôi gọi API chuyển giọng nói thành văn bản của Google để chuyển lời nói thành văn bản, tuy nhiên đối với dự án này, có rất nhiều tên sản phẩm và tên khách hàng không phải là từ tiếng Anh chuẩn, vì vậy tôi phải chuyển các tên sản phẩm và tên khách hàng không chuẩn này cho API dưới dạng các từ gợi ý để nó có thể nhận ra chúng tốt hơn.
Bên cạnh đó nếu người dùng đề cập đến một số trong câu hỏi. Đôi khi nhận dạng đủ thông minh để thay đổi nó thành chữ số Ả Rập, nhưng đôi khi lại không, vì vậy tôi cũng cần phải xử lý tình huống đó bằng cách chuyển đổi tất cả các số sang chữ số Ả Rập.
Hệ thống sẽ nhận được kích hoạt bằng “Hey Google”, sau đó là các câu hỏi. Và nó sẽ chấm dứt khi người dùng nói GoodBye!
Mô hình phân loại ý định
Hiện tại, mô hình sẽ phân loại truy vấn thành một trong bốn loại. Bốn loại này là:
- customerOrder: đơn hàng do thám cho ngày mai là gì?
- productOrder: đặt hàng bánh sừng bò mini cho ngày mai là gì?
- ai: Hôm nay ai nhận được 10 chiếc bánh sừng bò đơn giản?
- số lượng: Novo nhận được bao nhiêu bánh mì baguette hôm nay?
Vì tôi chỉ nhận được một số câu hỏi từ khách hàng, vì vậy tôi tạo ra các câu hỏi của riêng mình để tôi trích xuất tất cả tên sản phẩm, tên khách hàng và thời gian. Tôi sử dụng danh sách tiền tố phổ biến kết hợp với tên thực thể ngẫu nhiên để tạo các câu hỏi. Mỗi danh mục sẽ có 500 câu hỏi đào tạo.
Tiền tố chung cho khách hàng
['là gì', 'cho tôi biết về', 'tôi muốn biết', 'bạn có biết']Tiền tố chung cho sản phẩm
['là gì', 'cho tôi biết về', 'tôi muốn biết', 'bạn có biết', 'bạn có thể cho tôi biết không']Tiền tố chung cho ai:
['ai', 'cho tôi biết ai', 'tôi muốn biết ai', 'bạn có biết ai không']Tiền tố chung cho số lượng:
['bao nhiêu', 'cho tôi biết bao nhiêu']
Tôi đã sử dụng thuật toán Naive Bayes đa thức để dự đoán vì tôi thấy nó dễ thực hiện và nó có độ chính xác cao.
Chiến lược OneVsRest có thể được sử dụng để học nhiều nhãn, ví dụ như bộ phân loại được sử dụng để dự đoán nhiều nhãn. Naive Bayes hỗ trợ nhiều lớp, nhưng chúng tôi đang ở trong một kịch bản nhiều nhãn, do đó, chúng tôi bọc Naive Bayes trong OneVsRestClassifier.
Trích xuất thực thể
Lúc đầu, tôi đã suy nghĩ về việc sử dụng Spacy để đào tạo một mô hình tùy chỉnh cho việc trích xuất thực thể, tuy nhiên tôi thấy rằng điều đó là không cần thiết vì dữ liệu của chúng tôi rất nhỏ nên tôi có thể truy xuất tất cả các tên sản phẩm và khách hàng có thể có và sử dụng nó để kiểm tra xem truy vấn có chứa sản phẩm hoặc khách hàng. Tuy nhiên, phương pháp này đôi khi không hoạt động khi nhận dạng giọng nói không thể dịch sang văn bản.
Dữ liệu đầu vào: Hôm nay Cornercopia nhận được bao nhiêu bánh nướng thịt xông khói?
Đã nhận ra: Hôm nay ngôucopia nhận được bao nhiêu bánh nướng thịt xông khói?
Ở đây Cornercopia là tên khách hàng, nhưng đôi khi nhận dạng giọng nói sẽ phát hiện ra nó là tiếng ngô nghê.
Để giải quyết câu hỏi này, tôi sử dụng thuật toán so khớp mẫu cử chỉ. Ý tưởng là tìm dãy con so khớp liền kề dài nhất không chứa phần tử "rác"; những phần tử "rác" này là những phần tử không thú vị theo một nghĩa nào đó, chẳng hạn như dòng trống hoặc khoảng trắng.
Ví dụ: cho một truy vấn và danh sách tất cả các tên khách hàng có thể có, nếu chúng ta muốn trích xuất tên khách hàng từ truy vấn, trước tiên chúng ta xác định độ dài của tên khách hàng, sau đó chúng ta tìm tất cả các ngam từ truy vấn trong đó n là độ dài của tên khách hàng. Sau đó, chúng tôi tìm ra sự giống nhau giữa tên khách hàng và các ngram này bằng thuật toán so khớp mẫu cử chỉ. Nếu điểm số tương tự cao hơn giá trị nhất định (defalut 0.9), thì chúng tôi trích xuất thực thể khỏi truy vấn.
Tìm dữ liệu chính xác để phản hồi
Sau khi mô hình phân loại truy vấn thành một trong bốn nhóm. Chương trình trích xuất thực thể từ truy vấn. Nếu nó không thể trích xuất bất kỳ thực thể nào, nó sẽ chỉ trả lời là “Tôi không hiểu, vui lòng hỏi tôi câu hỏi khác”, nếu không nó sẽ tạo bộ lọc dựa trên các thực thể này và lấy lại kết quả chính xác từ dataframe.
Q: Lệnh trinh sát cho ngày mai là gì?
Ý định: customerOrder
Thực thể: {Thời gian: ngày mai, Khách hàng: Scout}
Câu trả lời: Scout nhận được 38 bánh mì buổi sáng 20 bánh sừng bò nhỏ 15 giăm bông và bánh sừng bò phô mai 15 bánh sừng bò sô cô la vào ngày mai.
Coinsmart. Đặt cạnh Bitcoin-Börse ở Europa
Source: https://chatbotslife.com/voice-recognition-bakery-solution-1cdb06cf636e?source=rss—-a49517e4c30b—4