
Überspringen Sie zu Abschnitt:
Das Paket text_analysis bietet Methoden zum Tokene Text, berechnet die Lesbarkeitswerte für ein Dokument und bewertet die Ähnlichkeit von terms . Es soll in der natürlichen Sprachverarbeitung ( NLP ) als Teil eines Informationsabrufsystems verwendet werden.
Es ist in drei Bibliotheken aufgeteilt:
Weitere Informationen zu Informationsabrufsystemen und der Theorie hinter dieser Bibliothek finden Sie in den Verweise.
Die Tokenisierung umfasst die folgenden Schritte:
term splitter spaltet Text in eine Liste von Begriffen an geeigneten Stellen wie Weißraum und Interpunktion mittelgroß;character filter manipuliert Begriffe vor der Tokenisierung (z. B. Änderungsfall und / oder Entfernen von Nicht-Wort-Zeichen);term filter manipuliert die Begriffe, indem sie zusammengesetzte oder gebundene Begriffe aufgeteilt oder Stamm und Lemmatisierung angewendet werden. Der termFilter kann auch stopwords herausfiltern. Undtokenizer wandelt Begriffe in eine Sammlung von tokens um, die tokenisierte Versionen des Begriffs und einen Zeiger auf die Position des tokenisierten Begriffs (N-Gramm) im Quelltext enthalten. Die Token werden je nach ausgewählter TokenizingStrategy für Schlüsselwörter, Begriffe und/oder N-Gramm generiert. Die gewünschte N-Gramm-Reichweite kann in der Tokenisierung des Textes oder des Dokuments übergeben werden. 
Das Textdokument zeigt die Absätze , Sätze , Begriffe und Token eines Textdokuments auf und berechnet Lesbarkeitsmaßnahmen:
Flesch reading ease score , ein Lesbarkeitsmaß, das aus Satzlänge und Wortlänge auf einer 100-Punkte-Skala berechnet wurde; UndFlesch-Kincaid grade level , eine Lesbarkeitsmaßnahme in Bezug auf die US-amerikanische Schulklassenstufe. Das TextDocument enthält auch einen Co-Occurrence-Diagramm, der mit dem RAKE-Algorithmus (Rapid Keyword Extraction) generiert wird, aus dem die Schlüsselwörter (und die Schlüsselwort-Bewertungen) erhalten werden können. Die folgenden Maßnahmen zur term werden als Erweiterungen in der String angegeben:
Damerau–Levenshtein distance ist die minimale Anzahl von Einzelcharakter-Änderungen (Transpositionen, Insertionen, Löschungen oder Substitutionen), die erforderlich sind, um einen term in einen anderen zu ändern.edit similarity ist ein normalisiertes Maß für Damerau–Levenshtein distance auf einer Skala von 0,0 bis 1,0, berechnet durch Teilen der Differenz zwischen der maximalen Bearbeitungsentfernung (Summe der Länge der beiden Begriffe) und der berechneten editDistance durch die maximale Bearbeitungsentfernung;length distance gibt den Absolutwert der Längedifferenz zwischen zwei Begriffen zurück.character similarity gibt die Ähnlichkeit zweier Begriffe zurück, da sie sich auf die Sammlung einzigartiger Zeichen in jedem Term auf einer Skala von 0,0 bis 1,0 bezieht.length similarity gibt die Länge der Länge zwischen zwei Begriffen auf einer Skala von 0,0 bis 1,0 auf einer logarithmischen Skala zurück (1 - das Protokoll des Verhältnisses der Termlängen); UndJaccard similarity misst die Ähnlichkeit zwischen endlichen Probensätzen und ist definiert als die Größe der Schnittstelle geteilt durch die Größe der Vereinigung der Stichprobensätze. Die Termilarity Class zählt alle Ähnlichkeitsmaßnahmen zweier Begriffe auf und liefert die TermSimilarity.similarity -Eigenschaft, die die vier Maßnahmen zu einem einzigen Wert kombiniert.
Die Termilarity-Klasse liefert auch eine Funktion zum Aufteilen von Begriffen in k-grams , die in Zauberkorrekturalgorithmen verwendet werden.
( zurück nach oben )
Fügen Sie in der pubspec.yaml Ihres Flutter -Projekts die folgende Abhängigkeit hinzu:
dependencies :
text_analysis : <latest version> Fügen Sie in Ihrer Codedatei den Import der Text_analysis -Bibliothek hinzu. Dadurch wird auch die Porter2Stemmer -Klasse aus dem porter_2_stemmer -Paket importiert.
// import the core classes
import 'package:text_analysis/text_analysis.dart' ;
Um die Erweiterungen und/oder Typ -Definitionen des Pakets zu verwenden, fügen Sie auch einen der folgenden Importe hinzu:
// 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' ;
Die grundlegende englische Tokenisierung kann unter Verwendung eines English.analyzer Static Const Instance ohne Token -Filter durchgeführt werden:
// 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 ));Um Text oder Dokument zu analysieren, fydratieren Sie ein Textdokument, um die Ergebnisse der Textstatistik und Lesbarkeit zu erhalten:
// 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" Um die Begriffe zu vergleichen, rufen Sie die gewünschte Erweiterung des term oder die statische Methode von der Begriffsmilitätsklasse an:
// 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]
//
Weitere Informationen finden Sie in den Beispielen.
( zurück nach oben )
Die wichtigsten Schnittstellen der text_analysis -Bibliothek werden in diesem Abschnitt kurz beschrieben. Weitere Informationen finden Sie in der Dokumentation.
Die API enthält eine angemessene Menge Kesselplatte, aber wir wollen den Code als lesbar, erweiterbar und wiederverwendbar wie möglich erstellen:
interface > implementation mixin > base-class > implementation class pattern :interface ist eine abstrakte Klasse, die Felder und Methoden enthält, aber keinen Implementierungscode enthält. Die interface kann einen Fabrikkonstruktor enthüllen, der eine implementation class zurückgibt.implementation mixin implementiert die interface , jedoch nicht die Eingabefelder.base-class ist eine abstrakte Klasse mit dem implementation mixin und enthüllt einen standardmäßigen, unbenannten generativen Konstruktor für Unterklassen. Die Absicht ist, dass implementation classes die base class erweitern und die interface mit endgültigen Eigenschaften überschreiben, die über einen konstanten generativen Konstruktor übergeben wurden.( zurück nach oben )
Die Termilarity -Klasse liefert die folgenden Messungen der Ähnlichkeit zwischen zwei Begriffen:
characterSimilarity gibt die Ähnlichkeit zweier Begriffe zurück, die sich auf die Sammlung einzigartiger Zeichen in jedem Term auf einer Skala von 0,0 bis 1,0 beziehen.editDistance gibt den Damerau–Levenshtein distance zurück, die minimale Anzahl von Einzelcharakter-Änderungen (Transpositionen, Insertionen, Deletionen oder Substitutionen), die erforderlich sind, um einen term in einen anderen zu verwandeln.editSimilarity gibt ein normalisiertes Maß für Damerau–Levenshtein distance auf einer Skala von 0,0 bis 1,0 zurück, berechnet durch Teilen der Differenz zwischen der maximalen Bearbeitungsentfernung (Summe der Länge der beiden Begriffe) und der berechneten editDistance durch den maximalen Bearbeitungsabstand;lengthDistance gibt den Absolutwert der Längedifferenz zwischen zwei Begriffen zurück.lengthSimilarity gibt die Länge der Länge zwischen zwei Begriffen auf einer Skala von 0,0 bis 1,0 auf einer logarithmischen Skala zurück (1 - das Protokoll des Verhältnisses der Termlängen);jaccardSimilarity gibt den Jaccard -Ähnlichkeitsindex von zwei Begriffen zurück.Um einen Begriff mit einer Sammlung anderer Begriffe zu vergleichen, werden auch die folgenden statischen Methoden bereitgestellt:
editDistanceMap gibt eine HashMap von terms in ihre editSimilarity mit einem Begriff zurück.editSimilarityMap gibt eine Hashmap von terms in ihre editSimilarity mit einem Begriff zurück;lengthSimilarityMap gibt eine Hashmap von terms zu ihrer lengthSimilarity mit einem Begriff zurück;jaccardSimilarityMap gibt einen HashMap von terms an den Jaccard -Ähnlichkeitsindex mit einem Term zurück.termSimilarityMap gibt eine Hashmap von terms in die Bedingungen mit einem Laufzeit zurück;termSimilarities , editSimilarities , characterSimilarities , lengthSimilarities und jaccardSimilarities geben alle eine Liste von [yeLityIndex] -Werten für Kandidatenbegriffe zurück; Undmatches gibt die besten Übereinstimmungen aus terms für einen Begriff zurück, in absteigender Reihenfolge der Begriff Ähnlichkeit (am besten zuerst).String-Vergleiche sind nicht zu sensibel.
Die Textenklasse stützt sich auf Erweiterungsmethoden, die aus der Erweiterungsbibliothek importiert werden können.
( zurück nach oben )
Die Textanalyse-Schnittstelle enthält die in der Textanalyse verwendeten Spracheigenschaften und -methoden:
Die Latinluanguageanalyzer implementiert die TextAnalyzer -Schnittstellenmethoden für Sprachen, die das lateinische/römische Alphabet/Charakter -Set verwenden.
Die englische Implementierung von Textanalyzer ist in dieser Bibliothek enthalten und mischt sich in der LatinLanguageAnalyzerMixin .
( zurück nach oben )
Das TextDocument-Objektmodell zählt die Absätze , Sätze , Begriffe , Schlüsselwörter , N-Gramme , Silbenzahl und Token eines Textdokuments auf und bietet Funktionen, die Textanalysemessungen zurückgeben:
Das TextDocumentMixin implementiert die Durchschnittsenteilen-, Durchschnittsyllablecount-, WordCount-, FleschreadingeSecore- und Fleschkincaidgradelevel -Methoden.
Ein Textdokument kann mit dem unbenannten Fabrikkonstruktor oder mit den statischen Methoden analysieren oder analysieren. Alternativ erweitern Sie die TextDocumentBase -Klasse.
( zurück nach oben )
Die folgenden Definitionen werden in der gesamten Dokumentation verwendet:
corpus - Die Sammlung von documents , für die ein index gewartet wird.cosine similarity - Ähnlichkeit zweier Vektoren, die als Cosinus des Winkels zwischen ihnen gemessen wurden, dh das Punktprodukt der Vektoren geteilt durch das Produkt ihrer euklidischen Längen (aus Wikipedia).character filter - Filter Zeichen aus dem Text zur Erstellung der Tokenisierung.Damerau–Levenshtein distance - Eine Metrik zur Messung des edit distance zwischen zwei terms durch Zählen der Mindestanzahl von Operationen (Insertionen, Löschungen oder Substitutionen eines einzelnen Zeichens oder der Transposition von zwei benachbarten Zeichen), die erforderlich sind, um einen term in den anderen (aus Wikipedia) zu ändern.dictionary (in an index) - Ein Hash von terms ( vocabulary ) zur Häufigkeit des Auftretens in den corpus .document - Ein Datensatz im corpus , der im Primärschlüssel der corpus eine eindeutige Bezeichnung ( docId ) enthält und ein oder mehrere Textfelder enthält, die indiziert sind.document frequency (dFt) - Die Anzahl der Dokumente im corpus , die einen Begriff enthalten.edit distance - Ein Maß dafür, wie unterschiedlich zwei Begriffe sind, indem die Mindestanzahl von Operationen zählt, die erforderlich sind, um eine Zeichenfolge in den anderen zu verwandeln (aus Wikipedia).etymology - Die Untersuchung der Geschichte der Form von Wörtern und damit auch die Herkunft und Entwicklung ihrer semantischen Bedeutung über die Zeit (aus Wikipedia).Flesch reading ease score - Ein Lesbarkeitsmaß, das aus Satzlänge und Wortlänge auf einer 100 -Punkte -Skala berechnet wurde. Je höher die Punktzahl, desto leichter ist es, das Dokument (von Wikipedia) zu verstehen.Flesch-Kincaid grade level - Eine Lesbarkeitsmaßnahme in Bezug auf die US -amerikanische Schulklassenstufe. Es wird auch aus Satzlänge und Wortlänge (aus Wikipedia) berechnet.IETF language tag - Ein standardisierter Code oder Tag, mit dem menschliche Sprachen im Internet identifiziert werden. (aus Wikepedia).index - Ein invertierter Index, der verwendet wird, um document vom corpus mit einem vocabulary von terms nachzuschlagen.index-elimination - Auswählen einer Teilmenge der Einträge in einem Index, in dem sich der term in der Erfassung von terms in einer Suchphrase befindet.inverse document frequency (iDft) - Ein normalisiertes Maß dafür, wie selten ein term im Korpus ist. Es ist definiert als log (N / dft) , wobei n die Gesamtzahl der Begriffe im Index ist. Die iDft eines seltenen Begriffs ist hoch, während die iDft eines häufigen Terms wahrscheinlich niedrig ist.Jaccard index misst die Ähnlichkeit zwischen endlichen Probensätzen und ist definiert als die Größe der Kreuzung geteilt durch die Größe der Vereinigung der Stichprobensätze (aus Wikipedia).Map<String, dynamic> ist ein Akronym für "Java Script Object Notation" , ein gemeinsames Format für anhaltende Daten.k-gram - Eine Sequenz von (beliebigen) K aufeinanderfolgenden Zeichen aus einem term . Ein k-gram kann mit "$" beginnen, der den Beginn der Laufzeit bezeichnet und mit "$" endet, was das Ende der Laufzeit bezeichnet. Die 3 Gramm für "Schloss" sind {{ lemma or lemmatizer - Lemmatisierung (oder Lemmatisierung) in der Linguistik ist der Prozess der Gruppierung der gebogenen Formen eines Wortes, damit sie als ein einzelnes Element analysiert werden können, das durch das Lemma oder die Wikipedia des Wortes (aus Wikipedia) identifiziert wird.n-gram (manchmal auch als Q-Gramm bezeichnet) ist eine zusammenhängende Abfolge von n Elementen aus einer gegebenen Stichprobe von Text oder Sprache. Die Elemente können Phoneme, Silben, Buchstaben, Wörter oder Basispaare entsprechend der Anwendung sein. Die n-grams werden typischerweise aus einem Text- oder corpus gesammelt. Wenn es sich um Wörter handelt, können n-grams auch Schindeln (aus Wikipedia) genannt werden.Natural language processing (NLP) ist ein Unterfeld der Linguistik, Informatik und künstlichen Intelligenz, die sich mit den Interaktionen zwischen Computern und menschlicher Sprache befassen, insbesondere wie Computer so programmiert werden, dass sie große Mengen an natürlichen Sprachdaten (aus Wikipedia) verarbeiten und analysieren.Part-of-Speech (PoS) tagging ist die Aufgabe, jedes Wort in einer Abfolge von Wörtern mit einem Tag zu kennzeichnen, das angibt, welche lexikalische syntaktische Kategorie es in der angegebenen Sequenz (aus Wikipedia) annimmt.Phonetic transcription - Die visuelle Darstellung von Sprachgeräuschen (oder Telefonen) mittels Symbole. Die häufigste Art der phonetischen Transkription verwendet ein phonetisches Alphabet wie das internationale phonetische Alphabet (aus Wikipedia).postings - Ein separater Index, in dem aufgezeichnet wird, in welchem documents das vocabulary in einem Positionsindex auftritt. In den index wird auch die Positionen jedes term im text aufgezeichnet, um einen invertierten index zu erstellen.postings list - Ein Aufzeichnung der Positionen eines term in einem document . Eine Position eines term bezieht sich auf den Index des term in einem Array, das alle terms im text enthält. In einem zonierten index werden in den postings lists , dass die Positionen der einzelnen term im text A zone aufgezeichnet werden.stem or stemmer - Stamm ist der Prozess der Reduzierung von gebogenen (oder manchmal abgeleiteten) Wörtern auf ihren Wortstamm, die Basis oder die Wurzelform (im Allgemeinen eine geschriebene Wortform) (aus Wikipedia).stopwords - Gemeinsame Wörter in einer Sprache, die von der Indexierung ausgeschlossen sind.term - ein Wort oder eine Phrase, die aus dem corpus indiziert ist. Der term kann sich vom tatsächlichen Wort, das im Korpus verwendet wird, abhängig von dem verwendeten tokenizer unterscheiden.term filter - Filter unerwünschte Begriffe aus einer Sammlung von Begriffen (z. B. Stoppwörtern), unterteilt zusammengesetzte Begriffe in separate Begriffe und / oder Manipulationen, indem sie einen stemmer und / oder lemmatizer aufrufen.term expansion - Ermittlung von Begriffen mit ähnlicher Schreibweise (z. B. Rechtschreibkorrektur) oder Synonyme für einen Begriff.term frequency (Ft) - Die Häufigkeit eines term in einem Index- oder indizierten Objekt.term position - Der Null -basierte Index eines term in einem geordneten Array von terms , die aus dem corpus tokenisiert sind.text - Der indexierbare Inhalt eines document .token - Darstellung eines term in einer Textquelle, die von einem tokenizer zurückgegeben wird. Das Token kann Informationen über den term wie seine Position (s) ( term position ) im Text oder die Häufigkeit des Auftretens ( term frequency ) enthalten.token filter - Gibt eine Teilmenge von tokens aus dem Tokenizer -Ausgang zurück.tokenizer - Eine Funktion, die eine Sammlung von token aus text zurückgibt, nachdem ein Zeichenfilter, ein term Filter, Stemmer und / oder Lemmatizer angewendet wurden.vocabulary - Die Sammlung von terms die aus dem corpus indiziert sind.zone - Das Feld oder die Zone eines Dokuments, in dem ein Begriff auftritt, der für parametrische Indizes verwendet wird oder in dem die Bewertung und Rangliste der Suchergebnisse eine höhere Punktzahl auf Dokumente zugeordnet haben, die einen Begriff in einer bestimmten Zone enthalten (z. B. den Titel eher den Körper eines Dokuments).( zurück nach oben )
( zurück nach oben )
Wenn Sie einen Fehler finden, füllen Sie bitte ein Problem aus.
Dieses Projekt ist ein unterstützendes Paket für ein Revenue -Projekt, das vorrangig auf Ressourcen gerichtet ist. Seien Sie also geduldig, wenn wir nicht sofort auf Probleme reagieren oder Anfragen ziehen.