
跳到部分:
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 - 术语出现的文档的字段或区域,用于参数索引或搜索结果的评分和排名将更高的分数归因于包含特定区域中术语的文档(例如标题而不是文档的主体)。(返回到顶部)
(返回到顶部)
如果您发现错误,请填写问题。
该项目是一个收入项目的支持软件包,该项目具有优先的资源要求,因此,如果我们不立即回应问题或提取请求,请耐心等待。