lemminflectโมดูล Python สำหรับ lemmatization ภาษาอังกฤษและการติดเชื้อ
Lemminflect ใช้วิธีการพจนานุกรมเพื่อ lemmatize คำภาษาอังกฤษและทำให้พวกเขากลายเป็นรูปแบบที่ระบุโดยผู้ใช้ที่ให้การพึ่งพาสากลหรือแท็ก Penn Treebank ห้องสมุดทำงานร่วมกับคำที่ไม่ได้รับการ vocabulary (OOV) โดยใช้เทคนิคเครือข่ายประสาทเพื่อจำแนกรูปแบบคำและเลือกกฎการแปรเปลี่ยนที่เหมาะสม
ระบบทำหน้าที่เป็นโมดูลแบบสแตนด์อโลนหรือเป็นส่วนขยายไปยังระบบ NLP Spacy
กฎพจนานุกรมและสัณฐานวิทยานั้นได้มาจากพจนานุกรมผู้เชี่ยวชาญของ NIH ซึ่งมีข้อมูลชุดที่กว้างขวางเกี่ยวกับรูปแบบคำภาษาอังกฤษ
ระบบการติดเชื้อที่ง่ายขึ้นเท่านั้นที่มีอยู่ในรูปแบบ pyinflect Lemminflect ถูกสร้างขึ้นเพื่อจัดการกับข้อบกพร่องบางอย่างของโครงการและเพิ่มคุณสมบัติเช่น ...
สำหรับเอกสารล่าสุดให้ดู ที่ readthedocs
ความแม่นยำของ Lemminflect และยูทิลิตี้ NLP ยอดนิยมอื่น ๆ ได้รับการทดสอบโดยใช้ฐานข้อมูลการติดเชื้อที่สร้างขึ้นโดยอัตโนมัติ (AGID) เป็นพื้นฐาน นี่ไม่ใช่ชุดข้อมูลมาตรฐาน "ทองคำ" แต่มีรายการที่กว้างขวางของบทแทรกและการผันที่สอดคล้องกันของพวกเขาและดูเหมือนว่าจะเป็น "ดี" ที่ตั้งไว้สำหรับการทดสอบ การติดเชื้อแต่ละครั้งได้รับการแก้ไขโดยซอฟต์แวร์ทดสอบและจากนั้นเปรียบเทียบกับค่าดั้งเดิมในคลังข้อมูล การทดสอบรวมถึงคำที่ผันแปรที่แตกต่างกัน 119,194 คำ
| Package | Verb | Noun | ADJ/ADV | Overall | Speed |
|-----------------------------------------------------------------------------|
| LemmInflect 0.2.3 | 96.1% | 95.4% | 93.9% | 95.6% | 42.0 uS |
| Stanza 1.5.0 + CoreNLP 4.5.4 | 94.0% | 96.4% | 93.1% | 95.5% | 30.0 us |
| spaCy 3.5.0 | 79.5% | 88.9% | 60.5% | 84.7% | 393.0 uS |
| NLTK 3.8.1 | 53.3% | 52.2% | 53.3% | 52.6% | 12.0 uS |
|-----------------------------------------------------------------------------|
ความเร็วอยู่ในวินาทีวินาทีต่อบทแทรกและดำเนินการใน CPU I9-7940X หมายเหตุเนื่องจาก Stanza กำลังโทรไปยังซอฟต์แวร์ Java Corenlp กรณีทดสอบ 120K ทั้งหมดจึงถูกจัดกลุ่มเป็นสายเดียว สำหรับ Spacy ส่วนประกอบไปป์ไลน์ทั้งหมดถูกปิดใช้งานยกเว้น Lemmatizer เวลาต่อบทแทรกสูงอาจเป็นภาพสะท้อนของค่าใช้จ่ายทั่วไปของสถาปัตยกรรมท่อ
ข้อกำหนดภายนอกเพียงอย่างเดียวในการเรียกใช้ lemminflect คือ numpy ซึ่งใช้สำหรับคณิตศาสตร์เมทริกซ์ที่ขับอวนประสาท อวนเหล่านี้มีขนาดค่อนข้างเล็กและไม่จำเป็นต้องใช้พลังงาน CPU อย่างมีนัยสำคัญในการทำงาน
ติดตั้ง Do ..
pip3 install lemminflect
โครงการถูกสร้างและทดสอบภายใต้ Python 3 และ Ubuntu แต่ควรทำงานบนระบบ Linux, Windows, Mac และอื่น ๆ มันยังไม่ผ่านการทดสอบภายใต้ Python 2 แต่อาจทำงานในสภาพแวดล้อมนั้นโดยมีการเปลี่ยนแปลงน้อยที่สุดหรือไม่มีเลย
ฐานรหัสยังมีฟังก์ชั่นไลบรารีและสคริปต์เพื่อสร้างไฟล์ข้อมูลและอวนประสาท ซึ่งรวมถึงสิ่งต่าง ๆ เช่น ...
ไม่จำเป็นต้องมีสิ่งเหล่านี้สำหรับการดำเนินการรันไทม์ อย่างไรก็ตามหากคุณต้องการแก้ไขระบบให้ดูเอกสารสำหรับข้อมูลเพิ่มเติม
เพื่อ lemmatize คำใช้วิธี getLemma() สิ่งนี้ต้องใช้คำและแท็กการพึ่งพาสากลและส่งคืนบทแทรกเป็นรายการการสะกดที่เป็นไปได้ ระบบพจนานุกรมจะถูกใช้ก่อนและหากไม่พบบทแทรกจะใช้ระบบกฎ
> from lemminflect import getLemma
getLemma('watches', upos='VERB')
('watch',)
เพื่อเพิ่มคำพูดให้ใช้วิธี getInflection สิ่งนี้ต้องใช้บทแทรกและแท็ก Penn Treebank และส่งคืน tuple ของการผันที่เฉพาะเจาะจงที่เกี่ยวข้องกับแท็กนั้น เปรียบเทียบกับข้างต้นพจนานุกรมจะถูกใช้ก่อนแล้วจึงใช้กฎการติดเชื้อหากจำเป็น ..
> from lemminflect import getInflection
> getInflection('watch', tag='VBD')
('watched',)
> getInflection('xxwatch', tag='VBD')
('xxwatched',)
ห้องสมุดมีฟังก์ชั่นระดับต่ำกว่าเพื่อเข้าถึงพจนานุกรมและกฎ OOV โดยตรง สำหรับคำอธิบายโดยละเอียดโปรดดู lemmatizer หรือการผัน
หากต้องการใช้เป็นส่วนขยายคุณต้องใช้ Spacy เวอร์ชัน 2.0 หรือใหม่กว่า เวอร์ชัน 1.9 และก่อนหน้านี้ไม่รองรับวิธีการขยายที่ใช้ที่นี่
ในการตั้งค่าส่วนขยายให้นำเข้า lemminflect ก่อน สิ่งนี้จะสร้าง lemma ใหม่และวิธีการ inflect สำหรับแต่ละ Token เครื่องราง วิธีการทำงานคล้ายกับวิธีการที่อธิบายไว้ข้างต้นโดยมีข้อยกเว้นว่าสตริงถูกส่งคืนซึ่งมีการสะกดคำที่พบบ่อยที่สุดแทนที่จะเป็น tuple
> import spacy
> import lemminflect
> nlp = spacy.load('en_core_web_sm')
> doc = nlp('I am testing this example.')
> doc[2]._.lemma()
test
> doc[4]._.inflect('NNS')
examples
หากคุณพบข้อผิดพลาดโปรดรายงานในรายการปัญหา GitHub อย่างไรก็ตามโปรดทราบว่าเมื่อมาถึงการคืนค่าการติดเชื้อที่ถูกต้องจะมีปัญหาหลายประเภทที่อาจเกิดขึ้นได้ บางส่วนของสิ่งเหล่านี้ไม่สามารถแก้ไขได้อย่างง่ายดาย ปัญหาเกี่ยวกับแบบฟอร์มที่ได้รับการเบี่ยงเบน ได้แก่ ...
ประเด็นหนึ่งที่พบบ่อยคือบางรูปแบบของคำกริยา "เป็น" ไม่ได้ระบุไว้อย่างสมบูรณ์โดยแท็ก TreekBank ตัวอย่างเช่น BE/VBD จะลดลงอย่างใดอย่างหนึ่งว่า "เป็น" หรือ "เป็น" และ BE/VBP จะเพิ่มขึ้นเป็น "AM" หรือ "เป็น" เพื่อที่จะทำให้ไม่เห็นด้วยรูปแบบเหล่านี้คำอื่น ๆ ในประโยคจะต้องได้รับการตรวจสอบ ในเวลานี้ Lemminflect ไม่รวมฟังก์ชั่นนี้