
ข้ามไปที่ส่วน:
แพ็คเกจ text_analysis ให้วิธีการที่จะทำ tokenize tokenize, การคำนวณคะแนนการอ่านสำหรับเอกสารและประเมินความคล้ายคลึงกันของ terms มีจุดประสงค์เพื่อใช้ในการประมวลผลภาษาธรรมชาติ ( NLP ) ซึ่งเป็นส่วนหนึ่งของระบบดึงข้อมูล
มันแบ่งออกเป็นสามห้องสมุด:
อ้างถึงการอ้างอิงเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับระบบดึงข้อมูลและทฤษฎีเบื้องหลังห้องสมุดนี้
โทเค็นประกอบด้วยขั้นตอนต่อไปนี้:
term splitter แยกข้อความเป็นรายการคำศัพท์ในสถานที่ที่เหมาะสมเช่นพื้นที่สีขาวและเครื่องหมายวรรคตอนกลางประโยคcharacter filter จะจัดการคำศัพท์ก่อนการโทเค็น (เช่นการเปลี่ยนกรณีและ / หรือลบอักขระที่ไม่ใช่คำ);term filter จัดการคำศัพท์โดยการแยกสารประกอบหรือคำศัพท์ที่ยัติภังค์หรือใช้สเต็มและ lemmatization termFilter ยังสามารถกรอง stopwords และtokenizer แปลงคำศัพท์เป็นคอลเลกชันของ tokens ที่มีเวอร์ชัน tokenized ของคำและตัวชี้ไปยังตำแหน่งของคำศัพท์ tokenized (n-gram) ในข้อความต้นฉบับ โทเค็นถูกสร้างขึ้นสำหรับคำหลักคำศัพท์และ/หรือ N-GRAMS ขึ้นอยู่กับ TokenizingStrategy ที่เลือก ช่วง N-GRAM ที่ต้องการสามารถส่งผ่านได้เมื่อ tokenizing ข้อความหรือเอกสาร 
TextDocument ระบุ ย่อหน้า ของเอกสารข้อความ ประโยคคำ ศัพท์ และโท เค็น และการคำนวณมาตรการการอ่าน:
Flesch reading ease score , การวัดความสามารถในการอ่านที่คำนวณจากความยาวประโยคและความยาวของคำในระดับ 100 จุด; และFlesch-Kincaid grade level ซึ่งเป็นมาตรการการอ่านที่สัมพันธ์กับระดับเกรดโรงเรียนของสหรัฐอเมริกา TextDocument ยังรวมถึงกราฟการเกิดร่วมที่สร้างขึ้นโดยใช้อัลกอริทึมการสกัดคำหลักอย่างรวดเร็ว (Rake) ซึ่งสามารถรับคำหลัก (และคะแนนคำหลัก) ได้ มาตรการต่อไปนี้ของ term ที่คล้ายคลึงกันนั้นมีให้เป็นส่วนขยายของสตริง:
Damerau–Levenshtein distance เป็นจำนวนขั้นต่ำของการแก้ไขตัวอักษรเดี่ยว (การขนย้าย, การแทรก, การลบหรือการแทนที่) ที่จำเป็นในการเปลี่ยน term หนึ่งเป็นอีกคำหนึ่ง;edit similarity เป็นการวัดปกติของ Damerau–Levenshtein distance ในระดับ 0.0 ถึง 1.0 คำนวณโดยการหารความแตกต่างระหว่างระยะการแก้ไขสูงสุด (ผลรวมของความยาวของสองคำ) และ editDistance ที่คำนวณได้โดยระยะการแก้ไขสูงสุด;length distance ส่งคืนค่าสัมบูรณ์ของความแตกต่างของความยาวระหว่างสองคำ;character similarity ส่งคืนความคล้ายคลึงกันสองคำเนื่องจากเกี่ยวข้องกับการรวบรวมอักขระที่ไม่ซ้ำกันในแต่ละเทอมในระดับ 0.0 ถึง 1.0;length similarity จะส่งคืนความคล้ายคลึงกันระหว่างสองคำในระดับ 0.0 ถึง 1.0 ในระดับบันทึก (1 - บันทึกของอัตราส่วนของความยาวคำ); และJaccard similarity วัดความคล้ายคลึงกันระหว่างชุดตัวอย่าง จำกัด และถูกกำหนดให้เป็นขนาดของสี่แยกหารด้วยขนาดของการรวมกันของชุดตัวอย่าง คลาสของความเป็นอยู่ที่ระบุถึงมาตรการความคล้ายคลึงกันทั้งหมดของสองคำและให้คำว่า TermSimilarity.similarity ที่รวมมาตรการทั้งสี่เป็นค่าเดียว
คลาส Terstimilarity ยังมีฟังก์ชั่นสำหรับการแยกคำศัพท์ออกเป็น k-grams ที่ใช้ในอัลกอริทึมการแก้ไขการสะกด
( กลับไปด้านบน )
ใน pubspec.yaml ของโครงการ Flutter ของคุณเพิ่มการพึ่งพาต่อไปนี้:
dependencies :
text_analysis : <latest version> ในไฟล์รหัสของคุณเพิ่มการนำเข้าไลบรารี text_analysis สิ่งนี้จะนำเข้าคลาส Porter2Stemmer จากแพ็คเกจ porter_2_stemmer
// import the core classes
import 'package:text_analysis/text_analysis.dart' ;
ในการใช้ส่วนขยายของแพ็คเกจและ/หรือคำจำกัดความประเภทให้เพิ่มการนำเข้าต่อไปนี้:
// import the implementation classes, if needed
import 'package:text_indexing/implementation.dart' ;
// import the typedefs, if needed
import 'package:text_indexing/type_definitions.dart' ;
// import the extensions, if needed
import 'package:text_indexing/extensions.dart' ;
โทเค็นภาษาอังกฤษขั้นพื้นฐานสามารถทำได้โดยใช้ English.analyzer ซ์ const analyzer static static โดยไม่มีตัวกรองโทเค็น:
// Use the static English.analyzer instance to tokenize the text using the
// English analyzer.
final tokens = await English .analyzer. tokenizer (readabilityExample,
strategy : TokenizingStrategy .all, nGramRange : NGramRange ( 1 , 2 ));ในการวิเคราะห์ข้อความหรือเอกสารให้ไฮเดรตบันทึกข้อความเพื่อให้ได้สถิติข้อความและคะแนนการอ่าน:
// get some sample text
final sample =
'The Australian platypus is seemingly a hybrid of a mammal and reptilian creature.' ;
// hydrate the TextDocument
final textDoc = await TextDocument . analyze (
sourceText : sample,
analyzer : English .analyzer,
nGramRange : NGramRange ( 1 , 3 ));
// print the `Flesch reading ease score`
print (
'Flesch Reading Ease: ${ textDoc . fleschReadingEaseScore (). toStringAsFixed ( 1 )}' );
// prints "Flesch Reading Ease: 37.5" ในการเปรียบเทียบข้อกำหนดให้โทรหาส่วนขยายที่ต้องการใน term หรือวิธีการคงที่จากคลาส terstimilarity:
// define a misspelt term
const term = 'bodrer' ;
// a collection of auto-correct options
const candidates = [
'bord' ,
'board' ,
'broad' ,
'boarder' ,
'border' ,
'brother' ,
'bored'
];
// get a list of the terms orderd by descending similarity
final matches = term. matches (candidates);
// same as TermSimilarity.matches(term, candidates))
// print matches
print ( 'Ranked matches: $ matches ' );
// prints:
// Ranked matches: [border, boarder, bored, brother, board, bord, broad]
//
โปรดดูตัวอย่างสำหรับรายละเอียดเพิ่มเติม
( กลับไปด้านบน )
อินเทอร์เฟซคีย์ของไลบรารี text_analysis อธิบายสั้น ๆ ในส่วนนี้ โปรดดูเอกสารสำหรับรายละเอียด
API มีแผ่นหม้อไอน้ำจำนวนพอสมควร แต่เราตั้งเป้าหมายที่จะทำให้รหัสเป็นที่อ่านได้ขยายได้และสามารถใช้งานได้อีกครั้งที่สุด:
interface > implementation mixin > base-class > implementation class pattern :interface เป็นคลาสนามธรรมที่เปิดเผยฟิลด์และวิธีการ แต่ไม่มีรหัสการใช้งาน interface อาจเปิดเผยตัวสร้างโรงงานที่ส่งคืนอินสแตนซ์ implementation classimplementation mixin ใช้วิธีการคลาส interface แต่ไม่ใช่ฟิลด์อินพุตbase-class เป็นคลาสนามธรรมที่มี implementation mixin และเปิดเผยตัวแปร const Constructor ที่ไม่มีชื่อและไม่มีชื่อสำหรับคลาสย่อย ความตั้งใจคือ implementation classes ขยาย base class แทนที่ฟิลด์อินพุต interface ด้วยคุณสมบัติสุดท้ายที่ส่งผ่านผ่านตัวสร้าง const generative( กลับไปด้านบน )
คลาส Terstimilarity ให้มาตรการต่อไปนี้ของความคล้ายคลึงกันระหว่างสองคำ:
characterSimilarity ส่งคืนความคล้ายคลึงกันสองคำเนื่องจากเกี่ยวข้องกับคอลเลกชันของอักขระที่ไม่ซ้ำกันในแต่ละเทอมในระดับ 0.0 ถึง 1.0;editDistance ส่งคืน Damerau–Levenshtein distance จำนวนขั้นต่ำของการแก้ไขตัวละครเดี่ยว (transpositions การแทรกการลบหรือการแทนที่) ที่จำเป็นในการเปลี่ยน term หนึ่งเป็นอีกคำหนึ่ง;editSimilarity ส่งคืนการวัดปกติของ Damerau–Levenshtein distance ในระดับ 0.0 ถึง 1.0 คำนวณโดยการหารความแตกต่างระหว่างระยะการแก้ไขสูงสุด (ผลรวมของความยาวของทั้งสองคำ) และ editDistance ที่คำนวณโดยระยะทางแก้ไขสูงสุดlengthDistance จะส่งคืนค่าสัมบูรณ์ของความแตกต่างของความยาวระหว่างสองคำ;lengthSimilarity ส่งคืนความคล้ายคลึงกันระหว่างสองคำในระดับ 0.0 ถึง 1.0 ในระดับบันทึก (1 - บันทึกของอัตราส่วนของความยาวคำ);jaccardSimilarity ส่งคืนดัชนีความคล้ายคลึงกันของ Jaccard ของสองคำเพื่อเปรียบเทียบคำหนึ่งกับการรวบรวมคำอื่น ๆ วิธีการคงที่ต่อไปนี้จะมีให้:
editDistanceMap ส่งคืน HASHMAP ของ terms ให้กับ editSimilarity ของพวกเขาด้วยคำศัพท์;editSimilarityMap ส่งคืน HASHMAP ของ terms ไปยัง editSimilarity ของพวกเขาด้วยคำศัพท์;lengthSimilarityMap ส่งคืน hashmap ของ terms ไปยัง lengthSimilarity ของพวกเขาด้วยคำศัพท์;jaccardSimilarityMap ส่งคืน hashmap ของ terms ไปยังดัชนีความคล้ายคลึงกันของ Jaccard ด้วยคำศัพท์;termSimilarityMap ส่งคืน HASHMAP ของ terms ต่อข้อกำหนดความเป็นข้อกำหนดด้วยคำศัพท์;termSimilarities , editSimilarities , characterSimilarities , lengthSimilarities และ jaccardSimilarities ทั้งหมดกลับรายการของค่า [lamarityIndex] สำหรับเงื่อนไขผู้สมัคร; และmatches จะส่งคืนการจับคู่ที่ดีที่สุดจาก terms สำหรับเทอมตามลำดับจากมากไปน้อยของคำที่คล้ายคลึงกัน (การจับคู่ที่ดีที่สุดก่อน)การเปรียบเทียบสตริงไม่ไวต่อตัวพิมพ์ใหญ่
คลาส textsimilarity อาศัยวิธีการขยายที่สามารถนำเข้าจากไลบรารีส่วนขยาย
( กลับไปด้านบน )
อินเทอร์เฟซ Textanalyzer เปิดเผยคุณสมบัติและวิธีการเฉพาะภาษาที่ใช้ในการวิเคราะห์ข้อความ:
Latinlanguageanalyzer ใช้วิธีการเชื่อมต่อ TextAnalyzer สำหรับภาษาที่ใช้ชุดตัวอักษร/ตัวอักษรละติน/โรมัน
การใช้งานภาษาอังกฤษของ Textanalyzer รวมอยู่ในห้องสมุดนี้และผสมใน LatinLanguageAnalyzerMixin
( กลับไปด้านบน )
โมเดลวัตถุ TextDocument ระบุย่อหน้าของเอกสารข้อความ ประโยค คำ หลัก คำหลัก n-grams จำนวนพยางค์ และ โทเค็น และให้ฟังก์ชั่นที่ส่งคืนมาตรการวิเคราะห์ข้อความ:
TextDocumentMixin ใช้ค่าเฉลี่ยของความยาวเฉลี่ย, ค่าเฉลี่ยของ WordCount, fleschreadingeasescore และวิธีการ fleschkincaidgradelevel
TextDocument สามารถให้ความชุ่มชื้นกับตัวสร้างโรงงานที่ไม่มีชื่อหรือใช้วิธีการวิเคราะห์หรือวิเคราะห์วิธีการคงที่ หรือขยายคลาส TextDocumentBase
( กลับไปด้านบน )
มีการใช้คำจำกัดความต่อไปนี้ตลอดเอกสาร:
corpus - การรวบรวม documents ที่มีการเก็บรักษา indexcosine similarity - ความคล้ายคลึงกันของเวกเตอร์สองตัวที่วัดเป็นโคไซน์ของมุมระหว่างพวกเขานั่นคือผลิตภัณฑ์ DOT ของเวกเตอร์หารด้วยผลิตภัณฑ์ของความยาวยุคลิด (จากวิกิพีเดีย)character filter - ตัวกรองอักขระจากข้อความในการเตรียมการโทเค็นDamerau–Levenshtein distance - ตัวชี้วัดสำหรับการวัด edit distance ระหว่างสอง terms โดยการนับจำนวนขั้นต่ำของการดำเนินการ (การแทรกการลบหรือการแทนที่ตัวละครเดียวหรือการถ่ายโอนของอักขระที่อยู่ติดกันสองตัว) ที่จำเป็นในการเปลี่ยน term หนึ่งเป็นอีกคำหนึ่ง (จากวิกิพีเดีย)dictionary (in an index) - แฮชของ terms ( vocabulary ) ต่อความถี่ของการเกิดขึ้นในเอกสาร corpusdocument - บันทึกใน corpus ที่มีตัวระบุที่ไม่ซ้ำกัน ( docId ) ในคีย์หลักของ corpus และมีฟิลด์ข้อความหนึ่งช่องหรือมากกว่าที่จัดทำดัชนีdocument frequency (dFt) - จำนวนเอกสารใน corpus ที่มีคำศัพท์edit distance - การวัดว่าคำสองคำที่แตกต่างกันเป็นอย่างไรโดยการนับจำนวนขั้นต่ำของการดำเนินการที่จำเป็นในการแปลงสตริงหนึ่งเป็นอีกหนึ่ง (จาก Wikipedia)etymology - การศึกษาประวัติของรูปแบบของคำและโดยการขยายต้นกำเนิดและวิวัฒนาการของความหมายเชิงความหมายของพวกเขาตลอดเวลา (จากวิกิพีเดีย)Flesch reading ease score - การวัดการอ่านที่คำนวณจากความยาวประโยคและความยาวของคำในระดับ 100 จุด คะแนนที่สูงขึ้นเท่าไหร่ก็ยิ่งเข้าใจเอกสารได้ง่ายขึ้น (จาก Wikipedia)Flesch-Kincaid grade level - การวัดความสามารถในการอ่านเทียบกับระดับเกรดโรงเรียนของสหรัฐอเมริกา นอกจากนี้ยังคำนวณจากความยาวของประโยคและความยาวคำ (จาก Wikipedia)IETF language tag - รหัสหรือแท็กมาตรฐานที่ใช้ในการระบุภาษามนุษย์ในอินเทอร์เน็ต (จาก Wikepedia)index - ดัชนีกลับด้านที่ใช้ในการค้นหาการอ้างอิง document จาก corpus กับ vocabulary ของ termsindex-elimination - การเลือกชุดย่อยของรายการในดัชนีที่ term อยู่ในการรวบรวม terms ในวลีการค้นหาinverse document frequency (iDft) - การวัดปกติว่า term ที่หายากอยู่ในคลังข้อมูลได้อย่างไร มันถูกกำหนดเป็น log (N / dft) โดยที่ n คือจำนวนทั้งหมดของคำในดัชนี iDft ของคำที่หายากสูงในขณะที่ iDft ของคำที่พบบ่อยมีแนวโน้มที่จะต่ำJaccard index วัดความคล้ายคลึงกันระหว่างชุดตัวอย่าง จำกัด และถูกกำหนดเป็นขนาดของสี่แยกหารด้วยขนาดของการรวมกันของชุดตัวอย่าง (จาก Wikipedia)Map<String, dynamic> เป็นตัวย่อสำหรับ "Java Script Object Notation" ซึ่งเป็นรูปแบบทั่วไปสำหรับข้อมูลที่คงอยู่k-gram - ลำดับของ (ใด ๆ ) อักขระติดต่อกันจาก term k-gram สามารถเริ่มต้นด้วย "$" ซึ่งแสดงถึงจุดเริ่มต้นของเทอมและลงท้ายด้วย "$" ซึ่งแสดงถึงจุดสิ้นสุดของเทอม 3 กรัมสำหรับ "ปราสาท" คือ { lemma or lemmatizer - lemmatisation (หรือ lemmatization) ในภาษาศาสตร์เป็นกระบวนการของการจัดกลุ่มร่วมกันรูปแบบที่ผันของคำเพื่อให้พวกเขาสามารถวิเคราะห์เป็นรายการเดียวที่ระบุโดยบทแทรกของคำหรือรูปแบบพจนานุกรม (จากวิกิพีเดีย)n-gram (บางครั้งเรียกว่า Q-Gram) เป็นลำดับที่ต่อเนื่องกันของรายการ n จากตัวอย่างข้อความหรือคำพูดที่กำหนด รายการอาจเป็นหน่วยเสียงพยางค์ตัวอักษรคำหรือคู่ฐานตามแอปพลิเคชัน โดยทั่วไปแล้ว n-grams จะถูกรวบรวมจาก corpus ข้อความหรือคำพูด เมื่อรายการเป็นคำ n-grams อาจเรียกว่างูสวัด (จาก Wikipedia)Natural language processing (NLP) เป็นสาขาย่อยของภาษาศาสตร์วิทยาศาสตร์คอมพิวเตอร์และปัญญาประดิษฐ์ที่เกี่ยวข้องกับการโต้ตอบระหว่างคอมพิวเตอร์และภาษามนุษย์โดยเฉพาะอย่างยิ่งวิธีการโปรแกรมคอมพิวเตอร์เพื่อประมวลผลและวิเคราะห์ข้อมูลภาษาธรรมชาติจำนวนมาก (จาก Wikipedia)Part-of-Speech (PoS) tagging เป็นหน้าที่ของการติดฉลากทุกคำในลำดับของคำที่มีแท็กระบุว่าหมวดหมู่วากยสัมพันธ์คำว่ามันจะเป็นไปตามลำดับที่กำหนด (จาก Wikipedia)Phonetic transcription - การแสดงภาพเสียงพูด (หรือโทรศัพท์) ด้วยสัญลักษณ์ การถอดเสียงการออกเสียงที่พบบ่อยที่สุดใช้ตัวอักษรสัทศาสตร์เช่นตัวอักษรสัทศาสตร์นานาชาติ (จากวิกิพีเดีย)postings - ดัชนีแยกต่างหากที่บันทึก documents vocabulary ที่เกิดขึ้นใน index ตำแหน่งการโพสต์ยังบันทึกตำแหน่งของแต่ละ term ใน text เพื่อสร้าง index กลับหัวpostings list - บันทึกตำแหน่งของ term ใน document ตำแหน่งของ term หมายถึงดัชนีของ term ในอาร์เรย์ที่มี terms ทั้งหมดใน text ใน index Zoned postings lists จะบันทึกตำแหน่งของแต่ละ term ใน zone text Astem or stemmer - stemming เป็นกระบวนการของการลดคำที่ผัน (หรือบางครั้งที่ได้รับ) คำพูดของพวกเขาก้าน, ฐานหรือราก (โดยทั่วไปเป็นรูปแบบคำที่เขียน) (จาก wikipedia)stopwords - คำทั่วไปในภาษาที่ถูกแยกออกจากการจัดทำดัชนีterm - คำหรือวลีที่จัดทำดัชนีจาก corpus term อาจแตกต่างจากคำจริงที่ใช้ในคลังข้อมูลขึ้นอยู่กับ tokenizer ที่ใช้term filter - ตัวกรองคำศัพท์ที่ไม่ต้องการจากการรวบรวมคำศัพท์ (เช่นคำสั่งหยุด) แบ่งคำศัพท์ผสมออกเป็นคำศัพท์แยกต่างหากและ / หรือจัดการข้อกำหนดโดยการเรียกใช้ stemmer และ / หรือ lemmatizerterm expansion - การค้นหาคำที่มีการสะกดคำที่คล้ายกัน (เช่นการแก้ไขการสะกดคำ) หรือคำพ้องความหมายสำหรับคำศัพท์term frequency (Ft) - ความถี่ของ term ในดัชนีหรือวัตถุที่จัดทำดัชนีterm position - ดัชนีที่อิงตามศูนย์ของ term ในอาร์เรย์ที่สั่งซื้อของ terms ที่ถูกทำให้เป็นโทเค็นจาก corpustext - เนื้อหาที่สามารถจัดทำดัชนีของ document ได้token - การเป็นตัวแทนของ term ในแหล่งข้อความที่ส่งคืนโดย tokenizer โทเค็นอาจรวมถึงข้อมูลเกี่ยวกับ term เช่นตำแหน่ง ( term position ) ในข้อความหรือความถี่ของการเกิดขึ้น ( term frequency )token filter - ส่งคืนชุดย่อยของ tokens จากเอาต์พุตโทเคนิเซอร์tokenizer - ฟังก์ชั่นที่ส่งคืนคอลเลกชันของ token จาก text หลังจากใช้ตัวกรองอักขระตัวกรอง term , stemmer และ / หรือ lemmatizervocabulary - การรวบรวม terms ที่จัดทำดัชนีจาก corpuszone - ฟิลด์หรือโซนของเอกสารที่คำศัพท์เกิดขึ้นใช้สำหรับดัชนีพารามิเตอร์หรือที่การให้คะแนนและการจัดอันดับของผลการค้นหาคุณลักษณะคะแนนที่สูงขึ้นไปยังเอกสารที่มีคำในโซนเฉพาะ (เช่นชื่อค่อนข้างว่าเนื้อหาของเอกสาร)( กลับไปด้านบน )
( กลับไปด้านบน )
หากคุณพบข้อผิดพลาดโปรดกรอกปัญหา
โครงการนี้เป็นแพ็คเกจสนับสนุนสำหรับโครงการรายได้ที่มีการโทรลำดับความสำคัญเกี่ยวกับทรัพยากรดังนั้นโปรดอดทนหากเราไม่ตอบสนองต่อปัญหาทันทีหรือดึงคำขอ