You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/th/6-NLP/2-Tasks
leestott 507fbd0fad
🌐 Update translations via Co-op Translator
3 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 3 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 3 weeks ago

README.md

งานและเทคนิคทั่วไปในด้านการประมวลผลภาษาธรรมชาติ

สำหรับงาน การประมวลผลภาษาธรรมชาติ ส่วนใหญ่ ข้อความที่ต้องการประมวลผลจะต้องถูกแยกส่วน ตรวจสอบ และจัดเก็บผลลัพธ์ หรืออ้างอิงกับกฎและชุดข้อมูล งานเหล่านี้ช่วยให้โปรแกรมเมอร์สามารถสกัด ความหมาย หรือ เจตนา หรือเพียงแค่ ความถี่ ของคำและคำศัพท์ในข้อความได้

แบบทดสอบก่อนการบรรยาย

มาสำรวจเทคนิคทั่วไปที่ใช้ในการประมวลผลข้อความกัน เทคนิคเหล่านี้เมื่อรวมกับการเรียนรู้ของเครื่องจะช่วยให้คุณวิเคราะห์ข้อความจำนวนมากได้อย่างมีประสิทธิภาพ อย่างไรก็ตาม ก่อนที่จะนำ ML ไปใช้กับงานเหล่านี้ เรามาทำความเข้าใจปัญหาที่ผู้เชี่ยวชาญ NLP มักพบเจอกันก่อน

งานทั่วไปใน NLP

มีวิธีการวิเคราะห์ข้อความที่คุณกำลังทำงานอยู่หลายวิธี มีงานที่คุณสามารถทำได้ และผ่านงานเหล่านี้คุณจะสามารถเข้าใจข้อความและสรุปผลได้ โดยปกติคุณจะดำเนินการงานเหล่านี้ตามลำดับ

Tokenization

สิ่งแรกที่อัลกอริทึม NLP ส่วนใหญ่ต้องทำคือการแบ่งข้อความออกเป็นโทเค็นหรือคำ แม้ว่าจะฟังดูง่าย แต่การต้องคำนึงถึงเครื่องหมายวรรคตอนและตัวแบ่งคำและประโยคในภาษาต่าง ๆ อาจทำให้ซับซ้อนได้ คุณอาจต้องใช้วิธีการต่าง ๆ เพื่อกำหนดจุดแบ่ง

tokenization

การแบ่งประโยคจาก Pride and Prejudice อินโฟกราฟิกโดย Jen Looper

Embeddings

Word embeddings เป็นวิธีการแปลงข้อมูลข้อความของคุณให้อยู่ในรูปแบบตัวเลข โดยการทำ embeddings จะทำในลักษณะที่คำที่มีความหมายคล้ายกันหรือคำที่ใช้ร่วมกันจะจัดกลุ่มอยู่ใกล้กัน

word embeddings

"I have the highest respect for your nerves, they are my old friends." - Word embeddings สำหรับประโยคใน Pride and Prejudice อินโฟกราฟิกโดย Jen Looper

ลองใช้ เครื่องมือที่น่าสนใจนี้ เพื่อทดลองกับ word embeddings การคลิกที่คำหนึ่งจะแสดงกลุ่มคำที่คล้ายกัน เช่น 'toy' จะอยู่ในกลุ่มเดียวกับ 'disney', 'lego', 'playstation', และ 'console'

Parsing & Part-of-speech Tagging

ทุกคำที่ถูกแบ่งเป็นโทเค็นสามารถถูกแท็กเป็นส่วนของคำพูด เช่น คำนาม คำกริยา หรือคำคุณศัพท์ ประโยค the quick red fox jumped over the lazy brown dog อาจถูกแท็ก POS เป็น fox = noun, jumped = verb

parsing

การวิเคราะห์ประโยคจาก Pride and Prejudice อินโฟกราฟิกโดย Jen Looper

การวิเคราะห์โครงสร้างประโยคคือการระบุว่าคำใดเกี่ยวข้องกันในประโยค เช่น the quick red fox jumped เป็นลำดับคำคุณศัพท์-คำนาม-คำกริยา ที่แยกออกจากลำดับ lazy brown dog

Word and Phrase Frequencies

กระบวนการที่มีประโยชน์เมื่อวิเคราะห์ข้อความจำนวนมากคือการสร้างพจนานุกรมของทุกคำหรือวลีที่สนใจและความถี่ที่ปรากฏ วลี the quick red fox jumped over the lazy brown dog มีความถี่ของคำว่า the เท่ากับ 2

มาดูตัวอย่างข้อความที่เรานับความถี่ของคำกัน บทกวี The Winners ของ Rudyard Kipling มีบทดังนี้:

What the moral? Who rides may read.
When the night is thick and the tracks are blind
A friend at a pinch is a friend, indeed,
But a fool to wait for the laggard behind.
Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.

เนื่องจากความถี่ของวลีสามารถไม่คำนึงถึงตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กได้ตามต้องการ วลี a friend มีความถี่เท่ากับ 2 และ the มีความถี่เท่ากับ 6 และ travels มีความถี่เท่ากับ 2

N-grams

ข้อความสามารถถูกแบ่งออกเป็นลำดับของคำที่มีความยาวกำหนด เช่น คำเดียว (unigram), สองคำ (bigrams), สามคำ (trigrams) หรือจำนวนคำใด ๆ (n-grams)

ตัวอย่างเช่น the quick red fox jumped over the lazy brown dog ด้วยคะแนน n-gram เท่ากับ 2 จะได้ n-grams ดังนี้:

  1. the quick
  2. quick red
  3. red fox
  4. fox jumped
  5. jumped over
  6. over the
  7. the lazy
  8. lazy brown
  9. brown dog

อาจจะง่ายขึ้นถ้าจินตนาการว่าเป็นกล่องเลื่อนผ่านประโยค นี่คือตัวอย่างสำหรับ n-grams ที่มี 3 คำ โดย n-gram จะถูกเน้นในแต่ละประโยค:

  1. the quick red fox jumped over the lazy brown dog
  2. the quick red fox jumped over the lazy brown dog
  3. the quick red fox jumped over the lazy brown dog
  4. the quick red fox jumped over the lazy brown dog
  5. the quick red fox jumped over the lazy brown dog
  6. the quick red fox jumped over the lazy brown dog
  7. the quick red fox jumped over the lazy brown dog
  8. the quick red fox jumped over the lazy brown dog

n-grams sliding window

ค่า n-gram เท่ากับ 3: อินโฟกราฟิกโดย Jen Looper

Noun phrase Extraction

ในประโยคส่วนใหญ่จะมีคำนามที่เป็นประธานหรือกรรมของประโยค ในภาษาอังกฤษมักจะสามารถระบุได้จากการมี 'a' หรือ 'an' หรือ 'the' นำหน้า การระบุประธานหรือกรรมของประโยคโดยการ 'สกัดวลีคำนาม' เป็นงานทั่วไปใน NLP เมื่อพยายามทำความเข้าใจความหมายของประโยค

ในประโยค "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." คุณสามารถระบุวลีคำนามได้หรือไม่?

ในประโยค the quick red fox jumped over the lazy brown dog มีวลีคำนาม 2 วลี: quick red fox และ lazy brown dog

Sentiment analysis

ประโยคหรือข้อความสามารถถูกวิเคราะห์เพื่อดูอารมณ์ หรือว่า เป็นบวก หรือ เป็นลบ อารมณ์ถูกวัดในรูปแบบ polarity และ objectivity/subjectivity โดย polarity วัดจาก -1.0 ถึง 1.0 (ลบถึงบวก) และ 0.0 ถึง 1.0 (วัตถุประสงค์ที่สุดถึงอัตวิสัยที่สุด)

ในภายหลังคุณจะได้เรียนรู้ว่ามีวิธีการต่าง ๆ ในการกำหนดอารมณ์โดยใช้การเรียนรู้ของเครื่อง แต่หนึ่งในวิธีคือการมีรายการคำและวลีที่ถูกจัดหมวดหมู่เป็นบวกหรือลบโดยผู้เชี่ยวชาญ และนำโมเดลนั้นไปใช้กับข้อความเพื่อคำนวณคะแนน polarity คุณเห็นไหมว่าวิธีนี้สามารถทำงานได้ในบางสถานการณ์และไม่ดีในบางสถานการณ์?

Inflection

Inflection ช่วยให้คุณสามารถนำคำมาเปลี่ยนเป็นรูปเอกพจน์หรือพหูพจน์ได้

Lemmatization

Lemma คือรากหรือคำหลักสำหรับชุดคำ เช่น flew, flies, flying มี lemma เป็นคำกริยา fly

ยังมีฐานข้อมูลที่มีประโยชน์สำหรับนักวิจัย NLP โดยเฉพาะ:

WordNet

WordNet เป็นฐานข้อมูลของคำ คำพ้อง คำตรงข้าม และรายละเอียดอื่น ๆ สำหรับทุกคำในหลายภาษา เป็นเครื่องมือที่มีประโยชน์มากเมื่อพยายามสร้างการแปล ตัวตรวจสอบการสะกด หรือเครื่องมือภาษาทุกประเภท

ไลบรารี NLP

โชคดีที่คุณไม่จำเป็นต้องสร้างเทคนิคเหล่านี้ด้วยตัวเอง เพราะมีไลบรารี Python ที่ยอดเยี่ยมที่ทำให้การพัฒนาสำหรับผู้ที่ไม่ได้เชี่ยวชาญใน NLP หรือการเรียนรู้ของเครื่องง่ายขึ้นมาก ในบทเรียนถัดไปจะมีตัวอย่างเพิ่มเติม แต่ที่นี่คุณจะได้เรียนรู้ตัวอย่างที่มีประโยชน์เพื่อช่วยคุณในงานถัดไป

การฝึกฝน - ใช้ไลบรารี TextBlob

มาลองใช้ไลบรารีที่ชื่อว่า TextBlob ซึ่งมี API ที่มีประโยชน์สำหรับจัดการงานประเภทนี้ TextBlob "สร้างขึ้นบนพื้นฐานของ NLTK และ pattern และทำงานร่วมกันได้ดี"

หมายเหตุ: มี Quick Start ที่มีประโยชน์สำหรับ TextBlob ซึ่งแนะนำสำหรับนักพัฒนา Python ที่มีประสบการณ์

เมื่อพยายามระบุ noun phrases TextBlob มีตัวเลือกหลายตัวสำหรับการสกัดวลีคำนาม

  1. ลองดูที่ ConllExtractor

    from textblob import TextBlob
    from textblob.np_extractors import ConllExtractor
    # import and create a Conll extractor to use later 
    extractor = ConllExtractor()
    
    # later when you need a noun phrase extractor:
    user_input = input("> ")
    user_input_blob = TextBlob(user_input, np_extractor=extractor)  # note non-default extractor specified
    np = user_input_blob.noun_phrases                                    
    

    เกิดอะไรขึ้นที่นี่? ConllExtractor คือ "ตัวสกัดวลีคำนามที่ใช้ chunk parsing ที่ฝึกด้วยชุดข้อมูล ConLL-2000" ConLL-2000 หมายถึงการประชุมปี 2000 เกี่ยวกับ Computational Natural Language Learning ซึ่งในปีนั้นมีการจัด workshop เพื่อแก้ปัญหา NLP ที่ยากลำบาก และในปี 2000 คือ noun chunking โมเดลถูกฝึกด้วย Wall Street Journal โดยใช้ "sections 15-18 เป็นข้อมูลการฝึก (211727 tokens) และ section 20 เป็นข้อมูลทดสอบ (47377 tokens)" คุณสามารถดูขั้นตอนที่ใช้ ที่นี่ และ ผลลัพธ์

ความท้าทาย - ปรับปรุงบอทของคุณด้วย NLP

ในบทเรียนก่อนหน้านี้คุณได้สร้างบอท Q&A แบบง่าย ๆ ตอนนี้คุณจะทำให้ Marvin มีความเห็นอกเห็นใจมากขึ้นโดยการวิเคราะห์ข้อความที่คุณป้อนเพื่อดูอารมณ์และพิมพ์คำตอบที่เหมาะสมกับอารมณ์นั้น คุณยังต้องระบุ noun_phrase และถามเกี่ยวกับหัวข้อนั้นด้วย

ขั้นตอนของคุณเมื่อสร้างบอทสนทนาที่ดีขึ้น:

  1. พิมพ์คำแนะนำเพื่อแนะนำผู้ใช้วิธีการโต้ตอบกับบอท
  2. เริ่มลูป
    1. รับข้อมูลจากผู้ใช้
    2. หากผู้ใช้ขอออก ให้หยุด
    3. ประมวลผลข้อมูลผู้ใช้และกำหนดคำตอบที่เหมาะสมกับอารมณ์
    4. หากตรวจพบ noun phrase ในอารมณ์ ให้เปลี่ยนเป็นรูปพหูพจน์และถามข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนั้น
    5. พิมพ์คำตอบ
  3. กลับไปที่ขั้นตอน 2

นี่คือตัวอย่างโค้ดสำหรับการกำหนดอารมณ์โดยใช้ TextBlob สังเกตว่ามีเพียงสี่ ระดับ ของการตอบสนองต่ออารมณ์ (คุณสามารถเพิ่มได้หากต้องการ):

if user_input_blob.polarity <= -0.5:
  response = "Oh dear, that sounds bad. "
elif user_input_blob.polarity <= 0:
  response = "Hmm, that's not great. "
elif user_input_blob.polarity <= 0.5:
  response = "Well, that sounds positive. "
elif user_input_blob.polarity <= 1:
  response = "Wow, that sounds great. "

นี่คือตัวอย่างผลลัพธ์เพื่อเป็นแนวทาง (ข้อมูลผู้ใช้เริ่มต้นด้วย >):

Hello, I am Marvin, the friendly robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am ok
Well, that sounds positive. Can you tell me more?
> I went for a walk and saw a lovely cat
Well, that sounds positive. Can you tell me more about lovely cats?
> cats are the best. But I also have a cool dog
Wow, that sounds great. Can you tell me more about cool dogs?
> I have an old hounddog but he is sick
Hmm, that's not great. Can you tell me more about old hounddogs?
> bye
It was nice talking to you, goodbye!

หนึ่งในวิธีแก้ปัญหาที่เป็นไปได้สำหรับงานนี้คือ ที่นี่

ตรวจสอบความรู้

  1. คุณคิดว่าการตอบสนองที่เห็นอกเห็นใจจะ 'หลอก' ให้คนคิดว่าบอทเข้าใจพวกเขาจริง ๆ ได้หรือไม่?
  2. การระบุ noun phrase ทำให้บอทดู 'น่าเชื่อถือ' มากขึ้นหรือไม่?
  3. ทำไมการสกัด 'noun phrase' จากประโยคถึงเป็นสิ่งที่มีประโยชน์?

ลองสร้างบอทในแบบตรวจสอบความรู้ข้างต้นและทดสอบกับเพื่อนของคุณ มันสามารถหลอกพวกเขาได้หรือไม่? คุณสามารถทำให้บอทของคุณดู 'น่าเชื่อถือ' มากขึ้นได้หรือไม่?

🚀ความท้าทาย

ลองทำงานในแบบตรวจสอบความรู้ข้างต้นและพยายามนำไปใช้ ทดสอบบอทกับเพื่อนของคุณ มันสามารถหลอกพวกเขาได้หรือไม่? คุณสามารถทำให้บอทของคุณดู 'น่าเชื่อถือ' มากขึ้นได้หรือไม่?

แบบทดสอบหลังการบรรยาย

ทบทวนและศึกษาด้วยตนเอง

ในบทเรียนถัดไปคุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับการวิเคราะห์อารมณ์ ค้นคว้าเทคนิคที่น่าสนใจนี้ในบทความ เช่น บทความใน KDNuggets

งานที่ได้รับมอบหมาย

ทำให้บอทตอบกลับ


ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้