thảo luận Những chia sẻ, thảo luận về Xử lý ngôn ngữ tự nhiên (NLP)

Valky99

Senior Member
[UPDATED 11:41 AM - 01/08/2021 - #WDIRT - Hand Labeling Considered Harmful + Statistics versus machine learning]
Chào các bác :smile:

Nay mình mở thread này để cùng mọi người chia sẻ, góp chuyện về Xử lý ngôn ngữ tự nhiên. Không biết có bị trùng với thread khác k, có gì mod châm chước nhắc nhở nhé.

Background sơ sơ thì mình bắt đầu nghiên cứu NLP từ giữa năm 2017 đến giờ, các chủ đề mình nghiên cứu có thể kể 3 cái chính như sau: stylometry (tạm dịch: độ đo phong cách), so sánh tương đồng văn bản cùng ngôn ngữ, và hiện giờ thì đang cày về phân tích cây cú pháp sử dụng mô hình xuyên ngữ (tiếng Anh: cross-lingual dependency parsing).

Các món mình học để bắt đầu thì bao gồm học 2 môn Xử lý ngôn ngữ tự nhiên cơ bản + nâng cao (ĐH. KHTN-HCM), 1 khoá Coursera của trường Đại học Stanford, và cuốn sách NLP của tác giả Dan Jurafky <Link>.

Mục tiêu lập thread này là gì?
  • Thứ nhất là mình sẽ cố gắng mỗi tuần chia sẻ ít nhiều 2-3 thông tin, kiến thức về tình trạng của NLP trên thế giới cũng như Việt Nam cho mọi người
  • Thứ hai là nơi mọi người hỏi đáp, thảo luận về các vấn đề trong NLP.
Và rất nhiều mục tiêu khác nữa.
Và tất nhiên là trong quá trình hoạt động sẽ không thể tránh khỏi sai và thiếu sót, nên rất mong mọi người chỉ bảo thêm. Tks mọi người :beauty:

=============
Chia sẻ những gì mình đọc:
#WDIRT: #1, #2, #3, #4, #5

Chia sẻ những gì mình làm:
Giới thiệu tổng quan về funny toy: Click here

Log lại từng bước thực hiện như sau:
#WDIDT: #1, #2

P/S: Mình đang viết paper nên project text generation sẽ bị delay tí. Mọi ng thông cảm nhé.
 
Last edited:
Về bài toán sentiment analysis, mọi người có thể xem tổng quát qua link Github này cho tiếng Việt, và Link này cho tiếng Anh.

Ai có thắc mắc thì cứ đưa lên nhé. Mình sẽ trả lời trong khả năng :smile:
 
Giờ người ta có hay dùng BERT không thím ?
Hi bác.

Mình nghĩ là không phải lúc nào cũng sử dụng mô hình BERT, mà tuỳ theo từng trường hợp họ có thể sử dụng các mô hình khác như XLNet,... đều dựa trên kiến trúc Transformer, để có thể cho ra kết quả tốt hơn.

Với nữa là khi mà đã nghiên cứu rồi thì khả năng rất cao là họ sẽ không bê y nguyên cái kiến trúc mô hình đó vào mà sẽ thay đổi, cải tiến ít nhiều để tăng độ chính xác cho bài toán.
 
Bác cho em hỏi: các bài toán NLP thì dựa vào đâu để tuning tham số vậy bác? hay là qua những paper đã đọc và qua practices, experiments rồi tuning theo exp vậy bác nhỉ? em rất thắc mắc vấn đề dựa vào đâu để đưa ra số layer, dropout, batchnorm ở đâu, vân vân cho hiệu quả, có dựa trên công thức toán học của mô hình hay như nào bác chỉ? vì cái món ML em nghiên cứu đến giờ nói thật là giống chơi trò xếp hình vậy. đắp công thức vs cách tính mình nghĩ là phù hợp và chạy thử xem ntn..
 
Bác cho em hỏi: các bài toán NLP thì dựa vào đâu để tuning tham số vậy bác? hay là qua những paper đã đọc và qua practices, experiments rồi tuning theo exp vậy bác nhỉ? em rất thắc mắc vấn đề dựa vào đâu để đưa ra số layer, dropout, batchnorm ở đâu, vân vân cho hiệu quả, có dựa trên công thức toán học của mô hình hay như nào bác chỉ? vì cái món ML em nghiên cứu đến giờ nói thật là giống chơi trò xếp hình vậy. đắp công thức vs cách tính mình nghĩ là phù hợp và chạy thử xem ntn..

Hi bác, mình thì chưa có nhiều cơ hội fine tune cho các mô hình ngôn ngữ vì mấy bài toán mình nghiên cứu chủ yếu cho tiếng Việt, mà tiếng Việt thì tất nhiên là nguồn tài nguyên chưa nhiều nên có rất ít mô hình có thể tận dụng đc. Ngoài ra, việc sử dụng mô hình ngôn ngữ khác thì phải lo nhiều cái như là sự khác nhau về cú pháp, từ vựng... nên thôi, huấn luyện từ đầu luôn :sad:

Mình cũng chia sẻ kinh nghiệm 1 chút là khi mình mượn kiến trúc mô hình ngôn ngữ khác cho bài toán tiếng Việt thì mình cũng giữ nguyên các tham số. Có chăng là thêm tri thức cho mô hình để có kết quả cao hơn, rồi tới mức nào đó rồi mới điều chỉnh các tham số đó.
 
Mình ngồi làm dữ liệu thấy mệt, dữ liệu sạch với đầy đủ thì tự nhiên model ngon ngay. Hiện vẫn đang dùng mấy model truyền thống ko dùng NN.
 
NLP này là cái gì vậy bác? Có thể giải thích sơ sơ đc ko
Hi bác, mình bổ sung thêm thông tin từ câu trả lời của bác kia.

NLP này là 1 nhánh của AI và tập trung vào xử lý ngôn ngữ tự nhiên của con người. Thì cũng giống như bên ảnh, có các bài toán khác nhau như nhận diện ảnh, phân loại ảnh, ... thì bên ngôn ngữ cũng có các bài toán như dịch, phân loại văn bản, ... Một ví dụ điển hình nhất là Google Translate.
 
#WDIRT #1: Sentence Transformers in the Hugging Face Hub

Tóm tắt: Một nhóm nghiên cứu đã giới thiệu một framework mới, hỗ trợ cho việc embedding các câu hoặc đoạn văn bản sang các vector chỉ bằng vài dòng code. Ngoài ra, thông tin về các mô hình trong framework này được huấn luyện cho hơn 100 ngôn ngữ khác nhau; đồng thời framework này cũng cung cấp các API khi bạn muốn truy xuất đến mô hình (bạn không cần lưu trữ local trên máy nữa) nếu như mô hình có sẵn trên hub của Hugging Face.

Python:
from sentence_transformers import SentenceTransformer
sentences = ["Hello World", "Hallo Welt"]

model = SentenceTransformer('sentence-transformers/paraphrase-MiniLM-L6-v2')
embeddings = model.encode(sentences)
print(embeddings)

Credit: Link Link
Các bạn có thể kiểm tra ngôn ngữ được hỗ trợ ở đây: Link
 
Để tăng thêm sự thu hút của ngành này với mọi người, mình sẽ lên kế hoạch và cố gắng thực hiện một funny toy với mục tiêu để mọi người thấy được tổng quan của quá trình tìm hiểu, nghiên cứu 1 domain trong NLP cho tới ứng dụng thực tế (và nếu có thể và trong khả năng thì mình sẽ chia sẻ luôn quá trình submit 1 paper). :smile:

Tất nhiên là thời gian mình dành cho quá trình này sẽ không nhiều, nên thời gian sẽ lâu (có thể trên 6 tháng) và mình sẽ lược bỏ những giai đoạn nào đó (nếu giai đoạn đó không quá quan trọng). Tất nhiên, mình cũng sẽ chia nhỏ ra thành các phần để mọi người dễ theo dõi. Cuối cùng, trong quá trình làm, chắc chắn mình không thể không có sai sót, rất mong nhận được góp ý của mọi người để kế hoạch tiếp diễn suôn sẻ.:burn_joss_stick:

Và funny toy mình dự định làm là về 1 con Bot Voz :sexy_girl: Chức năng của con bot này như sau:
  • Tự động tạo ra 1 đoạn văn bản từ 1 hoặc nhiêu phân đoạn văn bản là đầu vào
  • Tự động tạo ra 1 đoạn rap, văn, thơ...
  • ...

Demo từ 1 trang web khác (hình ảnh trong bài post này chỉ mang tính chất minh hoạ). Khác với họ là mình sẽ làm về tiếng Việt.
View attachment 644429

Kế hoạch dự kiến của mình như sau (có thể thay đổi, bổ sung nếu cần thiết):
  • Giai đoạn 1: thu thập các văn bản từ trên Forum Voz. Sau đó thì sẽ đưa qua quy trình xử lý (bao gồm phân đoạn từ, phân đoạn câu, làm sạch và chuẩn hoá, ...), và thống kê dữ liệu.
  • Giai đoạn 2: tìm hiểu, nghiên cứu 1 số paper liên quan đến text generation (giai đoạn này khá nhàm chán, nên mình sẽ cố gắng solo và đi nhanh nhất có thể)
  • Giai đoạn 3: thử nghiệm các mô hình có sẵn cho tiếng Anh đọc từ các paper trên, sau đó điều chỉnh cho tiếng Việt
(3 giai đoạn này sẽ lặp đi, lặp lại nhiều lần, làm xen kẽ nhau cho đến khi mình đưa ra được ý tưởng cho mô hình có kiến trúc phù hợp với dữ liệu mình có và mục tiêu mình cần đạt được).
  • Giai đoạn 4: bắt đầu thiết kế kiến trúc cho mô hình và code thôi :confident:
  • Giai đoạn 5: Điều chỉnh, cải tiến, kiểm lỗi, ... làm mọi thứ để mô hình xịn hơn (có thể quay lại 3 giai đoạn đầu để thêm thông tin)
  • Giai đoạn 6: Phát triển ứng dụng (có thể là web)
  • Giai đoạn 7: .... (chưa nghĩ ra)

Tạm thời như vậy, ngày mai mình sẽ bắt đầu vào giai đoạn 1, nếu có bác nào tham gia được thì cứ tham gia nhé, mình rất trân trọng. :adore:

À còn 1 điều cuối, thì cái text generation cũng là cái mới với mình, nên sẽ có những thắc mắc mà mình không trả lời ngay được, nên sự hỗ trợ từ cộng đồng là rất cần thiết. Chân thành cảm ơn mọi người :beauty:
 
#WDIDT #2: Tiếp tục kế hoạch đã triển khai như mình đã nói, thì hôm nay mình tìm được vài bài survey về text generation. Các link này như sau:
Link_1
Link_2
Link_3
Link_4
Link_5
Như vậy thì trong thời gian tới, mình sẽ tu luyện mấy cái papers này chắc cũng 1-2 tuần nếu tranh thủ dc thời gian :cool:. Và trong quá trình đọc paper chắc chắn là cần đọc thêm những paper khác nữa, nên nếu có kiến thức cần chia sẻ thì mình sẽ update ngay.
Mọi ng nếu có thắc mắc thì cứ hỏi nhé.
Hẹn lại sau 1-2 tuần :adore:

À quên, mình cũng đồng thời sẽ viết crawler để lấy dữ liệu từ voz luôn, sẽ cập nhật đều đặn phần này nhé :smile:
 
Last edited:
#WDIDT #2: Tiếp tục kế hoạch đã triển khai như mình đã nói, thì hôm nay mình tìm được vài bài survey về text generation. Các link này như sau:
Link_1
Link_2
Link_3
Link_4
Link_5
Như vậy thì trong thời gian tới, mình sẽ tu luyện mấy cái papers này chắc cũng 1-2 tuần nếu tranh thủ dc thời gian :cool:. Và trong quá trình đọc paper chắc chắn là cần đọc thêm những paper khác nữa, nên nếu có kiến thức cần chia sẻ thì mình sẽ update ngay.
Mọi ng nếu có thắc mắc thì cứ hỏi nhé.
Hẹn lại sau 1-2 tuần :adore:

À quên, mình cũng đồng thời sẽ viết crawler để lấy dữ liệu từ voz luôn, sẽ cập nhật đều đặn phần này nhé :smile:
Màu đỏ: kiếm cái nào mới hơn mà đọc. Ví dụ như cái này https://github.com/THUNLP-MT/TG-Reading-List
 
Bác có thể giới thiệu vài ứng dụng thực tế của NLP cho các doanh nghiệp vừa không ạ. Các sản phẩm như translate, ASR, TTS, text summarization nếu các ông lớn làm rồi thì mình không thể cạnh tranh được nếu thu phí dựa trên cung cấp API. Hướng nào cho các doanh nghiệp startup, os nhỏ có thể làm PoC hoặc áp dụng vào búiness?

via theNEXTvoz for iPhone
 
NLP làm chuyên sâu về engineer là làm gì vậy các bác ? Em vừa ra trường đi làm thì chủ yếu implement mấy paper thử nghiệm có kết quả tốt thì viết API, giờ nên học gì để nâng cao trình độ ạ
 
Hay quá, mình cũng đang muốn học về món này, nhưng chưa biết bắt đầu từ đâu. Mình là dân Software Engineering. Bác có thể giới thiệu cho mình nguồn tài liệu nào phù hợp không :adore::adore:
 
Bác có thể giới thiệu vài ứng dụng thực tế của NLP cho các doanh nghiệp vừa không ạ. Các sản phẩm như translate, ASR, TTS, text summarization nếu các ông lớn làm rồi thì mình không thể cạnh tranh được nếu thu phí dựa trên cung cấp API. Hướng nào cho các doanh nghiệp startup, os nhỏ có thể làm PoC hoặc áp dụng vào búiness?

via theNEXTvoz for iPhone
Hi bác,

Vài ứng dụng thực tế mà có thể ứng dụng NLP có thể kể đến như là chatbot tư vấn y khoa, pháp lý và nhiều lĩnh vực khác, hoặc hệ thống lọc nội dung không hợp lệ, phát hiện văn bản tương đồng, xác định tác giả của văn bản, gom nhóm người dùng dựa trên độ đo phong cách ...

Còn về hướng đi cho doanh nghiệp, startup hay os nhỏ thì mình không thể đưa ra được, vì cái này có nhiều yếu tố quyết định, cần nhiều cái đầu ngồi lại với nhau chứ k thể một người cân cả thế giới dc :sad:
Tuy nhiên, mình cũng chia sẻ kinh nghiệm mà mình có đc như sau. Mà không biết là mấy ông lớn trong câu hỏi là lớn cỡ Google, Amazon hay trong nước như FPT, Vin .... Nếu như là ông lớn của thế giới thì mình có lợi thế là phát triển sản phẩm dựa vào tiếng Việt. Còn nếu như FPT hay Vin thì mình lại đánh vào phát triển sản phẩm dựa vào lĩnh vực ngách.
 
Back
Top