
セクションにスキップ:
text_analysisパッケージは、テキストをトークン化し、ドキュメントの読みやすさスコアを計算し、 termsの類似性を評価する方法を提供します。情報検索システムの一部として、自然言語処理( NLP )で使用することを目的としています。
3つのライブラリに分かれています。
情報検索システムとこのライブラリの背後にある理論の詳細については、参照を参照してください。
トークン化は次の手順を含みます。
term splitter 、ホワイトスペースや文章句読点などの適切な場所でテキストを用語のリストに分割します。character filter 、トークン化の前に用語を操作します(例:ケースの変更や非単語文字の削除)。term filter 、化合物またはハイフンの用語を分割したり、茎と柔軟性を適用したりすることにより、用語を操作します。 termFilter 、 stopwordsをフィルタリングすることもできます。そしてtokenizer 、用語のトークン化バージョンを含むtokensのコレクションと、ソーステキストのトークン化用語(n-gram)の位置へのポインターに変換します。トークンは、選択されたTokenizingStrategyに応じて、キーワード、用語、およびnグラム用に生成されます。目的のn-gram範囲は、テキストまたはドキュメントをトークン化するときに渡すことができます。 
TextDocumentは、テキストドキュメントの段落、文、用語、トークンを列挙し、読みやすさの測定値を計算します。
Flesch reading ease score 、100ポイントスケールで文の長さと単語の長さから計算された読みやすさの尺度。そしてFlesch-Kincaid grade level 、米国の学校学年レベルに比べて読みやすさの尺度。 TextDocumentは、迅速なキーワード抽出(Rake)アルゴリズムを使用して生成された共起グラフも含まれており、キーワード(およびキーワードスコア)を取得できます。term性の次の測定値は、文字列の拡張として提供されます。
Damerau–Levenshtein distance 、あるtermを別の用語に変更するために必要な単一の特徴編集(転置、挿入、削除、または置換)の最小数です。edit similarity 、最大編集距離(2つの項の長さの合計)と計算された編集距離の差を除算することによって計算された0.0〜1.0のスケールでのDamerau–Levenshtein distance距離の正規editDistanceれた尺度です。length distance 、2つの用語間の長さの差の絶対値を返します。character similarity 、0.0〜1.0のスケールで各用語の一意のキャラクターのコレクションに関連するため、2つの用語を2つに返します。length similarityログスケールで0.0〜1.0のスケールで2つの項間の長さの類似性を返します(1-項の長さの比率のログ)。そしてJaccard similarity 、有限のサンプルセット間の類似性を測定し、交差のサイズをサンプルセットの結合のサイズで割ったものとして定義されます。用語クラスは、2つの用語のすべての類似性測定値を列挙し、4つの測定値を単一の値に組み合わせたTermSimilarity.similarityプロパティを提供します。
また、用語クラスは、スペル補正アルゴリズムで使用されるk-gramsに項を分割する関数を提供します。
(トップに戻る)
Flutterプロジェクトのpubspec.yamlで、次の依存関係を追加します。
dependencies :
text_analysis : <latest version>コードファイルに、text_analysisライブラリのインポートを追加します。これにより、 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 static constインスタンスを使用して実行できます。
// 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入力フィールドをオーバーライドすることです。(トップに戻る)
用語分類クラスは、2つの用語間の類似性の次の尺度を提供します。
characterSimilarity 、0.0〜1.0のスケールで各用語の一意のキャラクターのコレクションに関連するため、2つの用語を2つに返します。editDistance Damerau–Levenshtein distanceを返します。これは、1つのtermを別の用語に変更するために必要な単一の文字編集(転置、挿入、削除、または置換)の最小数を返します。editSimilarity 、最大編集距離(2つの用語の長さの合計)と計算された編集距離の差を除算することによって計算された0.0〜1.0のスケールで、 Damerau–Levenshtein distanceの正規化されたeditDistance 0.0から1.0のスケールで返します。lengthDistance 、2つの用語間の長さの差の絶対値を返します。lengthSimilarity 、ログスケールで0.0〜1.0のスケールで2つの項間の長さの類似性を返します(1-項の長さの比率のログ)。jaccardSimilarity 、2つの用語のJaccard類似性インデックスを返します。1つの用語を他の用語のコレクションと比較するために、次の静的方法も提供されます。
editDistanceMap termsの用語のハッシュマップを用語でeditSimilarityに返します。editSimilarityMap用語のtermsのハッシュマップをeditSimilarityに返します。lengthSimilarityMap 、用語のlengthSimilarityにtermsのハッシュマップを用語で返します。jaccardSimilarityMap termsのハッシュマップをJaccardの類似性インデックスに項で返します。termSimilarityMap termsのハッシュマップを用語との類似性に返します。termSimilarities 、 editSimilarities 、 characterSimilarities 、 lengthSimilarities類似性、およびjaccardSimilaritiesすべて、候補用語の[類似性index]値のリストを返します。そしてmatches 、期間の類似性の下降順に、 termsから最高の一致を返します(ベストマッチファースト)。文字列比較は症例に敏感ではありません。
Textsimilarityクラスは、拡張機能を拡張メソッドに依存しています。これは、拡張ライブラリからインポートできます。
(トップに戻る)
TextAnalyzerインターフェイスは、テキスト分析で使用される言語固有のプロパティと方法を公開します。
Latinlanguageanalyzerは、ラテン/ローマのアルファベット/文字セットを使用する言語のTextAnalyzerインターフェイス方法を実装しています。
TextAnalyzerの英語の実装はこのライブラリに含まれており、 LatinLanguageAnalyzerMixinミキシンに混合されています。
(トップに戻る)
TextDocumentオブジェクトモデルは、テキストドキュメントの段落、文、用語、キーワード、 nグラム、音節カウント、トークンを列挙し、テキスト分析測定値を返す関数を提供します。
TextDocumentMixinは、AverageEntencelength、AveragesYllablecount、wordcount、fleschreadingeaseScore、fleschkinciadgradelevelメソッドを実装します。
TextDocumentは、名前のないファクトリーコンストラクターで水分を補給するか、分析または分析の静的方法を使用できます。または、TextDocumentBaseクラスを拡張します。
(トップに戻る)
ドキュメント全体で次の定義が使用されています。
corpus indexが維持されるdocumentsのコレクション。cosine similarity - それらの間の角度のコサインとして測定された2つのベクトルの類似性、つまりベクターのドット積をユークリッドの長さの積で割った(ウィキペディアから)。character filter - トークン化の準備中のテキストから文字をフィルターします。Damerau–Levenshtein distance - 1つのtermsを別の用語(ウィキペディアから)にedit distanceするために必要な最小操作(挿入、削除または置換、または2つの隣接する文字の置換)をカウントすることにより、2つの用語間の編集termを測定するためのメトリック。dictionary (in an index) - corpus文書の発生頻度に対するterms (語彙)のハッシュ( vocabulary )。document - corpusのレコード。これは、 corpusの主キーに一意の識別子( docId )を備えており、インデックス化された1つ以上のテキストフィールドが含まれています。document frequency (dFt) - 用語を含むcorpus内のドキュメントの数。edit distance - 1つの文字列を他の文字列に変換するために必要な操作の最小数をカウントすることにより、2つの用語がどれほど類似しているかの尺度です(ウィキペディアから)。etymology - 単語の形の歴史の研究、さらには、時間を越えてそれらの意味的な意味の起源と進化(ウィキペディアから)。Flesch reading ease score - 100ポイントスケールで文の長さと単語の長さから計算された読みやすさの尺度。スコアが高いほど、ドキュメントを理解しやすくなります(ウィキペディアから)。Flesch-Kincaid grade level - 米国の学校の学年レベルに比べて、読みやすさの尺度。また、文の長さと単語の長さ(ウィキペディアから)からも計算されます。IETF language tag - インターネット内の人間言語を識別するために使用される標準化されたコードまたはタグ。 (Wikepediaから)。index - termsのvocabularyに対して、 corpusからのdocument参照を検索するために使用される倒立インデックス。index-elimination - termがtermsのコレクションにあるインデックス内のエントリのサブセットを検索フレーズのコレクションに選択します。inverse document frequency (iDft) - コーパスでのtermがどれほどまれであるかの正規化された尺度。これは、 log (N / dft)として定義されます。ここで、nはインデックス内の項の総数です。まれな用語のiDftは高く、頻繁な用語のiDft低い可能性があります。Jaccard index 、有限サンプルセット間の類似性を測定し、交差点のサイズをサンプルセットの結合のサイズ(ウィキペディアから)で割ったものとして定義されます。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 (ウィキペディアから)帯状疱疹とも呼ばれます。Natural language processing (NLP)は、コンピューターと人間の言語の相互作用に関係する言語学、コンピューターサイエンス、および人工知能のサブフィールド、特にコンピューターをプログラムして大量の自然言語データを処理および分析する方法(ウィキペディアから)です。Part-of-Speech (PoS) tagging特定のシーケンス(ウィキペディアから)で想定している語彙的構文カテゴリを示すタグを含む一連の単語のすべての単語にラベルを付けるタスクです。Phonetic transcription - シンボルによる音声音(または電話)の視覚的表現。最も一般的なタイプの音声転写は、国際的な音声アルファベット(ウィキペディアから)などの音声アルファベットを使用します。postings - vocabulary documentsを記録する個別のインデックス。位置indexでは、投稿はtext内の各termの位置を記録して、位置的に逆indexを作成します。postings list - document内のtermの位置の記録。 termの位置とは、 text内のすべてのtermsを含む配列内のtermのインデックスを指します。ゾーンindexでは、 postings lists text A zone内の各termの位置を記録します。stem or stemmer -STEMMINGは、単語のステム、ベース、またはルート形式(一般的に書かれた単語形式)(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 position )や発生頻度( term frequency )などのtermに関する情報が含まれる場合があります。token filter - トークンの出力からtokensのサブセットを返します。tokenizer - 文字フィルター、 termフィルター、ステムマー、および /またはlemmatizerを適用した後、 textからtoken Sのコレクションを返す関数。vocabulary - corpusから索引付けされたtermsのコレクション。zone - 用語が発生し、パラメトリックインデックスに使用されるドキュメントのフィールドまたはゾーン、または検索結果のスコアリングとランキングが、特定のゾーンに用語を含むドキュメント(ドキュメントの本文ではなくタイトル)を含むドキュメントに帰属する場合。(トップに戻る)
(トップに戻る)
バグが見つかった場合は、問題を埋めてください。
このプロジェクトは、リソースに対する優先順位の呼びかけがある収益プロジェクトのサポートパッケージですので、問題やリクエストをすぐに返信しない場合は我慢してください。