การกั้น
การกั้นคำเป็นกระบวนการลดคำลงจนได้คำต้นกำเนิด/ฐาน มันตัดตัวอักษรออกจากตอนท้าย ขณะค้นหาคำสำคัญเฉพาะ ระบบจะส่งกลับคำบางรูปแบบจากเอกสาร
ตัวอย่าง: ค้นหาคำว่า 'เรือ', ส่งกลับเรือ, คนพายเรือ, พายเรือ ฯลฯ
ที่นี่คำต้นกำเนิดคือเรือและคำต่อท้ายจะถูกลบออกจนกว่าจะถึงคำต้นกำเนิด
สเตมเมอร์มี 2 ประเภท:
- พอร์เตอร์ สตีมเมอร์
- สโนว์บอล สเต็มเมอร์
พอร์เตอร์ สตีมเมอร์:
หนึ่งในเครื่องมือสกัดกั้นที่ใช้กันทั่วไปและมีประสิทธิภาพที่สุด ผ่านการลดคำห้าขั้นตอน
from nltk.stem.porter import PorterStemmer p_stemmer = PorterStemmer() words = ['run', 'runner', 'ran', 'runs', 'easily', 'fairly', 'fairness'] for word in words: print(word + '---->' + p_stemmer.stem(word)) print("\n") OUTPUT: run---->run runner---->runner ran---->ran runs---->run easily---->easili fairly---->fairli fairness---->fair
สโนว์บอลสเต็มเมอร์:
เป็นการปรับปรุงก้านของ Porter ในแง่ของความเร็วและความแม่นยำ
from nltk.stem.snowball import SnowballStemmer p_stemmer = PorterStemmer() words = ['run', 'runner', 'ran', 'runs', 'easily', 'fairly', 'fairness'] for word in words: print(word + '---->' + p_stemmer.stem(word)) print("\n") OUTPUT: run---->run runner---->runner ran---->ran runs---->run easily---->easili fairly---->fairli fairness---->fair
การย่อคำ
โครงสร้างการวิเคราะห์การย่อคำของคำ มันมีประโยชน์และให้ข้อมูลมากกว่าการสกัดกั้น โดยจะวิเคราะห์คำที่อยู่รอบๆ เพื่อกำหนดตำแหน่ง (ส่วนหนึ่งของคำพูด) ของคำ
import spacy nlp = spacy.load('en_core_web_sm') doc = nlp(u'I am a runner running in a race because i love to run since i ran today') for token in doc: print(f'{token.text:{12}} {token.pos:{6}} {token.lemma:<{22}} {token.lemma_}') show_lemmas(doc) OUTPUT: I 95 4690420944186131903 I am 87 10382539506755952630 be a 90 11901859001352538922 a runner 92 12640964157389618806 runner running 100 12767647472892411841 run in 85 3002984154512732771 in a 90 11901859001352538922 a race 92 8048469955494714898 race because 98 16950148841647037698 because i 95 4690420944186131903 I love 100 3702023516439754181 love to 94 3791531372978436496 to run 100 12767647472892411841 run since 98 10066841407251338481 since i 95 4690420944186131903 I ran 100 12767647472892411841 run today 92 11042482332948150395 today
หยุดคำพูด
คำหยุดเป็นคำที่เกิดขึ้นบ่อยครั้งซึ่งไม่จำเป็นต้องมีการแท็ก ดังนั้นสิ่งเหล่านี้จึงถูกกรองออกจากข้อความที่จะประมวลผล คำเหล่านี้เป็นคำนามที่ใช้บ่อย และคำกริยาเช่น is, the, a ฯลฯ
คำหยุดเริ่มต้น:
เราสามารถรับความยาวของคำหยุดเริ่มต้นที่ตั้งไว้ได้เช่นกันโดยใช้ฟังก์ชัน len()
import spacy nlp = spacy.load('en_core_web_sm') # Print the set of spaCy's default stop words: print(nlp.Defaults.stop_words) print(f"\n Length of default stop words is: {len(nlp.Defaults.stop_words)}") OUTPUT: {"'d", "'ll", "'m", "'re", "'s", "'ve", 'a',.. '’ll', '’m', '’re', '’s', '’ve'} Length of default stop words is: 326
ดูว่าคำนั้นเป็นคำหยุดหรือไม่:
ในการตรวจสอบว่าคำใดคำหนึ่งเป็นคำหยุดหรือไม่ เราสามารถตรวจสอบได้ว่าใช้ is_stop
#Checks in entire set nlp.vocab['is'].is_stop nlp.vocab['mystery'].is_stop OUTPUT: True False
เพิ่มคำหยุด:
เราสามารถเพิ่มคำหยุดใหม่ในชุดคำหยุดเริ่มต้นได้
nlp.Defaults.stop_words.add('btw') nlp.vocab['btw'].is_stop OUTPUT: True
ลบคำหยุด:
เราสามารถลบคำออกจากค่าเริ่มต้นและตรวจสอบเพื่อยืนยันว่าคำนั้นถูกลบออกไปแล้วหรือไม่
nlp.Defaults.stop_words.remove('beyond') nlp.vocab['beyond'].is_stop OUTPUT: False
ค้นหาซอร์สโค้ดของฉันสำหรับบทความนี้
การกั้นขวาง
การย่อ
หยุดคำพูด
NLP-NaturalLanguageProcessing/stop_words.ipynb at main ·…
มีส่วนร่วมกับ Shreya-khandelwal/NLP-NaturalLanguageProcessing development โดยการสร้างบัญชีบน GitHubgithub.com x
เกี่ยวกับฉัน
ฉันชื่อ Shreya Khandelwal นักวิทยาศาสตร์ด้านข้อมูล อย่าลังเลที่จะติดต่อกับฉันทาง LinkedIn!
ติดตามฉันใน "สื่อ" เพื่อรับการอัปเดตเป็นประจำในหัวข้อที่คล้ายกัน