
Пропустить раздел:
Пакет text_analysis предоставляет методы для токенизации текста, вычисления показателей читаемости для документа и оценивать сходство terms . Он предназначен для использования в обработке естественного языка ( NLP ) как часть системы поиска информации.
Он разделен на три библиотеки:
Обратитесь к ссылкам, чтобы узнать больше о системах поиска информации и теории этой библиотеки.
Токенизация содержит следующие шаги:
term splitter разбивает текст в список терминов в соответствующих местах, таких как белое пространство и пунктуация в середине предложения;character filter манипулирует терминами до токенизации (например, изменение случая и / или удаление не словных символов);term filter манипулирует терминами, разделяя соединительные или дефиские термины или применяя стебля и лемматизацию. termFilter также может отфильтровать stopwords ; иtokenizer преобразует термины в коллекцию tokens , которые содержат токенизированные версии термина, и указатель на положение токенового члена (N-Gram) в исходном тексте. Токены генерируются для ключевых слов, терминов и/или N-граммов, в зависимости от выбранной TokenizingStrategy . Желаемый диапазон N-грамма может быть передана при токенуризации текста или документа. 
TextDocument перечисляет абзацы , предложения , термины и токены текстового документа и вычисляет меры читаемости:
Flesch reading ease score , мера читаемости, рассчитанная по длине предложения и длине слова по 100-балльной шкале; иFlesch-Kincaid grade level , мера читаемости относительно уровня школьного класса США. TextDocument также включает в себя график совместного появления, сгенерированный с использованием алгоритма извлечения ключевых слов (грабли), из которого можно получить ключевые слова (и оценки ключевых слов). Следующие меры сходства 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 измеряет сходство между конечными наборами образцов и определяется как размер пересечения, деленного на размер объединения наборов образцов. Классы Temprimility перечисляют все показатели сходства двух терминов и обеспечивают собственность TermSimilarity.similarity , которая объединяет четыре меры в единое значение.
Класс терминов также предоставляет функцию для разделения терминов на 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 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 или статический метод из класса TemprimiLaity:
// 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 и выявляет неназванный генеративный конструктор Const по умолчанию для подклассов. Намерение состоит в том, что implementation classes расширяют base class , переопределяя поля ввода interface с конечными свойствами, передаваемыми через конструктор Generation 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 возвращает хэш -карту terms в их editSimilarity с термином;editSimilarityMap возвращает хэш -карту terms в их editSimilarity с термином;lengthSimilarityMap возвращает хэш -карту terms в их lengthSimilarity с термином;jaccardSimilarityMap возвращает хэш -карту terms в индекс сходства Jaccard с термином;termSimilarityMap возвращает хэш -карту terms в срок с термином;termSimilarities , editSimilarities , characterSimilarities , lengthSimilarities и jaccardSimilarities все возвращают список значений [сходстваиндекс] для терминов -кандидатов; иmatches возвращают лучшие совпадения с terms для термина, в порядке убывания сходства (лучшее совпадение сначала).Сравнения строк не чувствительны к случаям.
Класс TextsImilarity опирается на методы расширения, которые могут быть импортированы из библиотеки расширений.
( Вернуться к вершине )
Интерфейс Textanalyzer раскрывает специфические для языка свойства и методы, используемые в анализе текста:
Latinlanguageanalyzer реализует методы интерфейса TextAnalyzer для языков, которые используют набор латинских/римских алфавитов/символов.
Английская реализация Textanalyzer включена в эту библиотеку и миксы в LatinLanguageAnalyzerMixin .
( Вернуться к вершине )
Модель объекта TextDocument перечисляет параграфы , предложения , термины , термины, ключевые слова, ключевые слова , n-граммы , количество слогов и токены и предоставляют функции, которые возвращают меры анализа текста:
TextDocumentmixin реализует средние среды, средние методы, условные, WordCount, FleschreadingEaseScore и Fleschkincaidgradelevel.
TextDocument может быть увлажнен с помощью неназванного заводского конструктора или с использованием статических методов Analyze или AnalyzeJson. Альтернативно, расширить класс TextDocumentbase.
( Вернуться к вершине )
Следующие определения используются на протяжении всей документации:
corpus - сбор documents , для которых поддерживается index .cosine similarity - сходство двух векторов, измеренных как косинус угла между ними, то есть точечное произведение векторов, разделенных на продукт их евклидовых длин (из Википедии).character filter - фильтры символов из текста в подготовке токенизации.Damerau–Levenshtein distance - метрика для измерения edit distance между двумя terms путем подсчета минимального количества операций (вставки, удаления или замены одного символа или транспонирования двух смежных символов), необходимых для изменения одного term на другой (от Википедии).dictionary (in an index) - хэш terms ( vocabulary ) с частотой происхождения в документах corpus .document - запись в corpus , которая имеет уникальный идентификатор ( docId ) в первичном ключе corpus и содержит одно или несколько текстовых полей, которые индексируются.document frequency (dFt) - количество документов в corpus , которые содержат термин.edit distance - мера того, насколько разнородны два термина, подсчитывая минимальное количество операций, необходимых для преобразования одной строки в другую (из Википедии).etymology - изучение истории формы слов и, по расширению, происхождения и эволюции их семантического значения во времени (из Википедии).Flesch reading ease score - мера читаемости, рассчитанная по длине предложения и длине слова по 100 -балльной шкале. Чем выше оценка, тем легче понять документ (из Википедии).Flesch-Kincaid grade level - мера читаемости относительно уровня школьного класса США. Он также рассчитывается по длине предложения и длине слов (из Википедии).IETF language tag - стандартизированный код или тег, который используется для идентификации человеческих языков в Интернете. (из Викепедии).index - перевернутый индекс, используемый для поиска ссылок document из corpus против vocabulary terms .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 - последовательность (любого) K последовательных символов из term . k-gram может начать с «$», обозначающей начало срока, и заканчиваться «$», обозначая конец термина. 3 грамма для "замка"-{ lemma or lemmatizer - Лемматизация (или лемматизация) в лингвистике - это процесс группировки вместе перегибаемых форм слова, чтобы их можно было проанализировать как один элемент, идентифицированный по лемме слова или словаря (из Википедии).n-gram (иногда также называемый Q-грамм)-это смежная последовательность n элементов из данной выборки текста или речи. Элементы могут быть фонемами, слогами, буквами, словами или парами базовых паров в соответствии с приложением. n-grams обычно собираются из текста или речевого corpus . Когда предметы являются словами, n-grams также могут быть названы черепицей (из Википедии).Natural language processing (NLP) является подполом лингвистики, информатики и искусственного интеллекта, связанного с взаимодействием между компьютерами и человеческим языком, в частности, как программировать компьютеры для обработки и анализа больших объемов данных о естественном языке (из Википедии).Part-of-Speech (PoS) tagging является задачей маркировки каждого слова в последовательности слов с тегом, указывающей, какую лексическую синтаксическую категорию он предполагает в данной последовательности (из Википедии).Phonetic transcription - визуальное представление речевых звуков (или телефонов) с помощью символов. Наиболее распространенный тип фонетической транскрипции использует фонетический алфавит, такой как Международный фонетический алфавит (из Википедии).postings term index индекс, который записывает, каким documents vocabulary index textpostings list - запись позиций term в document . Положение term относится к индексу term в массиве, который содержит все terms в text . В зонированном index postings lists записывают позиции каждого term в text zone .stem or stemmer - STEMMING - это процесс уменьшения перегибаемых (или иногда полученных) слов к их слову, базовой или корневой форме (обычно написанная форма слова) (из Википедии).stopwords - общие слова на языке, которые исключены из индексации.term - слово или фраза, которое проиндексируется из corpus . term может отличаться от фактического слова, используемого в корпусе в зависимости от используемого tokenizer .term filter - фильтры нежелательные термины из сбора терминов (например, стоп -слова), разбивает составные термины на отдельные термины и / или манипулирует терминами, вызывая stemmer и / или lemmatizer .term expansion - поиск терминов с аналогичным правописанием (например, коррекция орфографии) или синонимы для термина.term frequency (Ft) - частота term в индексе или индексированном объекте.term position - нулевой индекс term в упорядоченном ряде terms , направленных из corpus .text - индексируемый содержание document .token - представление term в текстовом источнике, возвращаемом tokenizer . Токен может включать информацию о term , такой как его позиция (ы) ( term position ) в тексте или частоту возникновения ( term frequency ).token filter - возвращает подмножество tokens из вывода токенизатора.tokenizer - функция, которая возвращает коллекцию token из text , после применения символьного фильтра, фильтра term , стебля и / или лемматизатора.vocabulary - коллекция terms , проиндексированных из corpus .zone - поле или зона документа, в котором встречается термин, используется для параметрических индексов или где оценка и ранжирование результатов поиска атрибут более высокий балл с документами, которые содержат термин в определенной зоне (например, название, скорее, что тело документа).( Вернуться к вершине )
( Вернуться к вершине )
Если вы найдете ошибку, пожалуйста, заполните проблему.
Этот проект представляет собой вспомогательный пакет для дохода проекта, который имеет приоритетный вызов ресурсов, поэтому, пожалуйста, будьте терпеливы, если мы не отвечаем немедленно на проблемы или не обращаются.