
跳到部分:
text_analysis軟件包提供了代幣化文本的方法,計算文檔的可讀性得分並評估terms的相似性。它旨在用於自然語言處理( NLP )作為信息檢索系統的一部分。
它分為三個庫:
請參閱參考文獻,以了解有關信息檢索系統以及該庫背後的理論的更多信息。
令牌化包括以下步驟:
term splitter將文本分配到適當的位置等術語列表,例如白色空間和中句標點符號;character filter在令牌化之前操縱術語(例如更改案例和 /或刪除非單詞字符);term filter通過分裂化合物或連字符項或施加詞乾和誘餌來操縱術語。 termFilter還可以過濾stopwords 。和tokenizer將術語轉換為包含該術語令牌版本的tokens集合,以及指向源文本中標記項(n-gram)的位置的指針。這些令牌是為關鍵字,術語和/或n-gram生成的,具體取決於所選的TokenizingStrategy 。在使文本或文檔的標記化時,可以傳遞所需的n-gram範圍。 
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屬性將四個度量結合到單個值中。
術語模仿類還提供了將項分解為k-grams的函數,該術語用於咒語校正算法中。
(返回到頂部)
在您的flutter項目的pubspec.yaml中,添加以下依賴性:
dependencies :
text_analysis : <latest version>在您的代碼文件中,添加text_analissible庫導入。這還將從porter_2_stemmer軟件包導入Porter2Stemmer類。
// 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來執行基本的英語令牌化。 Analyzer靜態常量實例沒有令牌過濾器:
// 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中調用所需的擴展名,或術語類似類別的靜態方法:
// 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 class實例的工廠構造函數;implementation mixin實現interface類方法,而不是輸入字段。base-class是帶有implementation mixin抽像類,並揭示了子類的默認,未命名的生成量構造函數。目的是implementation classes擴展了base class ,覆蓋了interface輸入字段,其中最終屬性通過const生成構造器傳遞。(返回到頂部)
術語類似類別提供了以下兩個術語之間相似性的度量:
characterSimilarity返回相似性兩個項,因為它與每個學期在0.0至1.0的範圍內相關的唯一字符集合;editDistance返回Damerau–Levenshtein distance ,單個字符編輯的最小數量(換位,插入,刪除或替換)將一個term更改為另一個術語所需的數量;editSimilarity返回Damerau–Levenshtein distance的歸一化度量,尺度為0.0至1.0,通過除以最大編輯距離(兩個項的長度的總和)和計算的editDistance ,然後除以最大編輯距離而計算出來;lengthDistance返回兩個術語之間長度差的絕對值;lengthSimilarity相似之處在日誌刻度上的0.0至1.0的比例(1-術語長度的比例)上返回兩個術語之間的相似性;jaccardSimilarity返回兩個術語的Jaccard相似性指數。要將一個術語與其他術語的集合進行比較,還提供了以下靜態方法:
editDistanceMap通過一個術語返回其editSimilarity的terms ;editSimilarityMap以一個terms返回其術語的editSimilarity hashmap;lengthSimilarityMap將terms的術語返回到其lengthSimilarity 。jaccardSimilarityMap以一個terms返回jaccard相似性指數的術語hashmap;termSimilarityMap將terms的標籤返回到術語的條款上;termSimilarities , editSimilarities , characterSimilarities , lengthSimilarities和jaccardSimilarities均返回候選術語的[相似性Indichex]值的列表;和matches返回terms中的最佳匹配項,按學期相似性的降序(最佳匹配項)返回。字符串比較不是對病例敏感的。
文本相似性類取決於可以從擴展庫導入的擴展方法。
(返回到頂部)
TextAnalyzer界面揭示了文本分析中使用的特定語言屬性和方法:
LatinLangueAgeAnalyzer實現了使用拉丁/羅馬字母/字符集的語言的TextAnalyzer接口方法。
本庫中包含了TextAnalyzer的英語實施,並在LatinLanguageAnalyzerMixin酶中混合。
(返回到頂部)
TextDocument對像模型列舉了文本文檔的段落,句子,術語,關鍵字, n-grams ,音節計數和令牌,並提供了返回文本分析度量的功能:
TextDocumentMixin實現了平均值,平均值,WordCount,fleschreadingingeasescore和fleschkincaidgradelevel方法。
可以用未命名的工廠構造函數或使用分析或分析靜態方法來補充文本文檔。或者,擴展TextDocumentBase類。
(返回到頂部)
在整個文檔中使用以下定義:
corpus - 維護index的documents集合。cosine similarity - 兩個向量的相似性,它們是它們之間的角度餘弦的相似性,即矢量的點產物除以其歐幾里得長度的產物(來自Wikipedia)。character filter - 在準備代幣化時過濾字符。Damerau–Levenshtein distance - 通過計算最小操作數量(單個字符的插入,刪除或替換或兩個相鄰字符的換位),用於測量兩個terms之間的edit distance度量,以將一個term更改為另一個項(從Wikipedia)。dictionary (in an index) - corpus文檔中發生頻率的terms ( vocabulary )。document - corpus中的記錄,該記錄在corpus的主鍵中具有唯一的標識符( docId ),並且包含一個或多個索引的文本字段。document frequency (dFt) - 包含術語的corpus中的文檔數量。edit distance - 通過計算將一個字符串轉換為另一個字符串所需的最小操作數(來自Wikipedia)所需的最小操作數量來衡量兩個術語。etymology - 對單詞形式的歷史的研究以及跨時間(來自Wikipedia)的語義含義的起源和演變。Flesch reading ease score一種可讀性度量,該度量是根據句子長度和單詞長度計算出的100分制。分數越高,了解文檔(來自Wikipedia)就越容易。Flesch-Kincaid grade level - 相對於美國學校等級的可讀性措施。它也是根據句子的長度和單詞長度(來自Wikipedia)計算得出的。IETF language tag - 用於識別Internet中人類語言的標準化代碼或標籤。 (來自Wikepedia)。index - 一種倒置的索引,用於根據terms的vocabulary從corpus中查找document參考。index-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 (任何)k連續字符的term 。 k-gram可以以“ $”開頭,表示學期的開始,並以“ $”結尾,表示該學期的結尾。 “城堡”的3克是{ lemma or lemmatizer - 檸檬酸(或檸檬酸)是將單詞的易位形式分組在一起的過程,因此可以將其分析為單個項目,並由單詞的lemma或字典形式(來自Wikipedia)識別。n-gram (有時也稱為Q-gram)是給定文本或語音樣本中n項的連續序列。這些項目可以根據應用程序是音素,音節,字母,單詞或鹼基對。 n-grams通常是從文本或語音corpus中收集的。當項目是單詞時, n-grams也可以稱為帶狀皰疹(來自Wikipedia)。Natural language processing (NLP)是語言學,計算機科學和人工智能的子場,與計算機與人類語言之間的相互作用有關,尤其是如何編程計算機來處理和分析大量自然語言數據(來自Wikipedia)。Part-of-Speech (PoS) tagging是用標籤序列標記每個單詞的任務,該單詞用標籤指示它在給定序列(來自Wikipedia)中假設的詞彙句法類別。Phonetic transcription - 通過符號的語音(或電話)的視覺表示。最常見的語音轉錄類型使用語音字母,例如國際語音字母(來自Wikipedia)。postings - 記錄documents vocabulary的單獨索引。在位置index中,帖子還記錄了text中每個term的位置以創建位置倒置index 。postings list - document中term位置的記錄。 term的位置是指包含text中所有terms的數組中的term索引。在分區index中, postings lists了text A zone中每個term的位置。stem or stemmer - 莖是將詞幹,鹼基或根形式(通常是書面單詞形式)(來自Wikipedia)減少(或有時是派生的)單詞的過程。stopwords - 以索引排除的語言中的常用單詞。term - 從corpus索引的單詞或短語。該term可能與語料庫中使用的實際單詞不同,具體取決於使用的tokenizer 。term filter - 從術語集合(例如停止字)中過濾不需要的條款,將復合條款分為單獨的條款和 /或通過調用stemmer和 /或lemmatizer來操縱條款。term expansion - 以相似的拼寫(例如拼寫校正)或同義詞找到術語。term frequency (Ft) - 索引或索引對term的頻率。term position - 從corpus標記terms term中的零索引。text - document的可索引內容。token - 代tokenizer返回的文本源中的term表示。令牌可以包括有關該term的信息,例如其位置(s)( term position )在出現的文本或頻率( term frequency )中。token filter - 從令牌器輸出中返回tokens集。tokenizer在應用字符過濾器, term過濾器,詞乾和 /或lemmatizer之後,可以從text中返回token s的函數。vocabulary - 從corpus索引的terms集合。zone - 術語出現的文檔的字段或區域,用於參數索引或搜索結果的評分和排名將更高的分數歸因於包含特定區域中術語的文檔(例如標題而不是文檔的主體)。(返回到頂部)
(返回到頂部)
如果您發現錯誤,請填寫問題。
該項目是一個收入項目的支持軟件包,該項目具有優先的資源要求,因此,如果我們不立即回應問題或提取請求,請耐心等待。