โทเค็น
Tokenization คืออะไร?? ในคำสั้น ๆ มันแยกข้อความเป็นคำหรือประโยค ...
ที่นี่เราจะพูดถึง tokenizers ต่างๆ ที่เราสามารถใช้ใน NLP ………
- พื้นที่สีขาว
text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']
2. การแยกเฉพาะ
เช่นเดียวกับพื้นที่สีขาว แต่ที่นี่เราให้splitตัวแยกที่เราต้องการ
text = 'Egypt, a country linking northeast Africa with the Middle East, dates to the time of the pharaohs.'
print(text.split(','))
# output
# ['Egypt', ' a country linking northeast Africa with the Middle East', ' dates to the time of the pharaohs.']
3. เอ็นแอลทีเค
NLTK เป็นแพลตฟอร์มชั้นนำสำหรับการสร้างโปรแกรม Python เพื่อทำงานกับข้อมูลภาษามนุษย์ มีโทเค็นไนเซอร์มากมายที่เราสามารถใช้ได้
l) word_toknizer:แก้ปัญหาในฟังก์ชันแยก:
ll) send_tokenize:ใช้ข้อความแยกเป็นแบบจำลองที่ได้รับการฝึกฝนมาก่อน
lll) wordpunct_tokenize:ที่นี่จะแยกคำและเครื่องหมายวรรคตอนทั้งหมด
lV) TreebankWordTokenizer:มันแบ่งข้อความเป็นเครื่องหมายวรรคตอนเหล่านี้?!.,;ในทางกลับกัน มันเป็นกฎทั่วไปที่หลากหลายสำหรับคำภาษาอังกฤษ
V) TweetTokenizer:แยกข้อความเป็นเครื่องหมายวรรคตอนและ?!.,;อิโมจิ
Vl) MWETokenizer:ที่นี่เราสามารถเพิ่มโทเค็นได้ตามที่เราต้องการเนื่องจากโทเค็นนี้add_mweช่วยให้เราสร้างสิ่งนั้นได้
4. ข้อความหยด
TextBlob เป็นไลบรารีPython (2 และ 3) สำหรับการประมวลผลข้อมูลที่เป็น ข้อความ โดยมี API อย่างง่ายสำหรับการดำดิ่งสู่งานประมวลผลภาษาธรรมชาติ (NLP) ทั่วไป เช่น การติดแท็กส่วนหนึ่งของคำพูด การสกัดวลีนาม การวิเคราะห์ความรู้สึก การจัดประเภท การแปล และอื่นๆ
from textblob import TextBlob
text="""But I'm glad you'll see me as I am. Above all, I wouldn't want people to think that I want to
prove anything. I don't want to prove anything, I just want to live; to cause no evil to anyone but myself.
I have that right, haven't I? Leo Tolstoy """
blob_object= TextBlob(text) # Word tokenization of the text
text_words = blob_object.words # To see all tokens
print(text_words) # To count the number of tokens
print(len(text_words))
# output
# ['But', 'I', "'m", 'glad', 'you', "'ll", 'see', 'me', 'as', 'I', 'am', 'Above', 'all', 'I', 'would', "n't", 'want', 'people', 'to', 'think', 'that', 'I', 'want', 'to', 'prove', 'anything', 'I', 'do', "n't", 'want', 'to', 'prove', 'anything', 'I', 'just', 'want', 'to', 'live', 'to', 'cause', 'no', 'evil', 'to', 'anyone', 'but', 'myself', 'I', 'have', 'that', 'right', 'have', "n't", 'I', 'Leo', 'Tolstoy']
# 55
5. กว้างขวาง
spaCy เป็นไลบรารีโอเพ่นซอร์สฟรีสำหรับการประมวลผลภาษาธรรมชาติใน Python มันมี NER, การแท็ก POS, การแยกวิเคราะห์การอ้างอิง, เวกเตอร์คำและอื่น ๆ
6. เกนซิม
Gensim: เป็นไลบรารีโอเพ่นซอร์สในภาษาไพธอนที่เขียนโดย Radim Rehurek ซึ่งใช้ในการสร้างแบบจำลองหัวข้อที่ไม่มีผู้ดูแลและการประมวลผลภาษาธรรมชาติ มันถูกออกแบบมาเพื่อแยกหัวข้อความหมายจากเอกสาร สามารถจัดการคอลเลคชันข้อความขนาดใหญ่ได้
7. เคราส์
Keras เป็นไลบรารีโอเพ่นซอร์สซึ่งเป็นหนึ่งในเฟรมเวิร์กการเรียนรู้เชิงลึกที่น่าเชื่อถือที่สุด ในการดำเนินการโทเค็นเราใช้เมธอด text_to_word_sequence จากคลาส Keras.preprocessing.text สิ่งที่ยอดเยี่ยมเกี่ยวกับ Keras คือการแปลงตัวอักษรเป็นตัวพิมพ์เล็กก่อนที่จะแปลงเป็นโทเค็น ซึ่งอาจช่วยประหยัดเวลาได้มากทีเดียว
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.text import text_to_word_sequence
text = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe. #Albert Einstein"
tokinzer = Tokenizer(num_words=20) # as recommended we put here the max text length we have
tokinzer.fit_on_texts(text)
tokens = text_to_word_sequence(text)
print(tokens)
# output
# ['two', 'things', 'are', 'infinite', 'the', 'universe', 'and', 'human', 'stupidity', 'and', "i'm", 'not', 'sure', 'about', 'the', 'universe', '', 'albert', 'einstein']
8. โทเค็นตามคำย่อย
โทเค็นที่เป็นที่นิยมคือโทเค็นตามคำย่อยซึ่งเป็นวิธีแก้ปัญหาระหว่างโทเค็นตามคำและอักขระ แนวคิดหลักคือการแก้ปัญหาที่ต้องเผชิญกับโทเค็นตามคำ (ขนาดคำศัพท์ที่ใหญ่มาก โทเค็น OOV จำนวนมาก และความหมายที่แตกต่างกันของคำที่คล้ายกันมาก) และโทเค็นตามตัวอักษร (ลำดับที่ยาวมากและโทเค็นแต่ละรายการที่มีความหมายน้อยกว่า)
อัลกอริทึมโทเค็นตามคำย่อยใช้หลักการต่อไปนี้
- อย่าแบ่งคำที่ใช้บ่อยเป็นคำย่อยย่อยๆ
- แยกคำที่หายากเป็นคำย่อยที่มีความหมายเล็กลง
ความท้าทาย
มาหารือเกี่ยวกับความท้าทายและข้อจำกัดของงานโทเค็น
โดยทั่วไป งานนี้ใช้สำหรับคลังข้อความที่เขียนเป็นภาษาอังกฤษหรือภาษาฝรั่งเศส ซึ่งภาษาเหล่านี้แยกคำโดยใช้ช่องว่างหรือเครื่องหมายวรรคตอนเพื่อกำหนดขอบเขตของประโยค ขออภัย วิธีนี้ใช้กับภาษาอื่นไม่ได้ เช่น จีน ญี่ปุ่น เกาหลี ไทย ฮินดี อูรดู ทมิฬ และอื่นๆ ปัญหานี้ทำให้ต้องพัฒนาเครื่องมือโทเค็นทั่วไปที่รวมทุกภาษาเข้าด้วยกัน
ข้อจำกัดอีกประการหนึ่งคือการใช้โทเค็นของข้อความภาษาอาหรับ เนื่องจากภาษาอาหรับมีสัณฐานวิทยาที่ซับซ้อนในฐานะภาษา ตัวอย่างเช่น คำภาษาอาหรับคำหนึ่งอาจมีโทเค็นที่แตกต่างกันได้ถึงหกอย่าง เช่น คำว่า “عقد” (อีควาด)
บทสรุป
เราได้พูดคุยเกี่ยวกับโทเค็นและเทคนิคมากมายที่เราสามารถใช้ได้ เนื่องจากเราเห็นว่ามีการวิจัยหลายประเภทที่ทำขึ้นในสาขานี้ และกำลังเติบโตขึ้นและมีความท้าทายมากมายที่ต้องเผชิญกับ NLP แต่เราจะได้เห็นอนาคตที่ปัญหาเหล่านี้จะได้รับการแก้ไข
คุณสามารถดูรหัสได้ในลิงค์ นี้





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)