
Pule para a seção:
O pacote text_analysis fornece métodos para tokenizar o texto, calcular as pontuações de legibilidade para um documento e avaliar a similaridade dos terms . Destina -se a ser usado no processamento de linguagem natural ( NLP ) como parte de um sistema de recuperação de informações.
É dividido em três bibliotecas:
Consulte as referências para saber mais sobre os sistemas de recuperação de informações e a teoria por trás dessa biblioteca.
A tokenização compreende as seguintes etapas:
term splitter divide o texto em uma lista de termos em lugares apropriados, como espaço em branco e pontuação no meio da frase;character filter manipula os termos antes da tokenização (por exemplo, alteração de caso e / ou remoção de caracteres não-palavras);term filter manipula os termos dividindo termos compostos ou hifenizados ou aplicando o Stemming e a Lemmatização. O termFilter também pode filtrar stopwords ; etokenizer converte os termos em uma coleção de tokens que contêm versões tokenizadas do termo e um ponteiro para a posição do termo tokenizado (n-gramas) no texto de origem. Os tokens são gerados para palavras-chave, termos e/ou n-gramas, dependendo da TokenizingStrategy selecionada. A faixa N-Gram desejada pode ser passada quando tokenizando o texto ou o documento. 
O TEXTDocument enumera os parágrafos , frases , termos e tokens e calcula medidas de legibilidade:
Flesch reading ease score , uma medida de legibilidade calculada a partir do comprimento da frase e do comprimento da palavra em uma escala de 100 pontos; eFlesch-Kincaid grade level , uma medida de legibilidade em relação ao nível escolar dos EUA. O TextDocument também inclui um gráfico de co-ocorrência gerado usando o algoritmo Rapid Keyword Extração (RAKE), a partir do qual as palavras-chave (e as pontuações das palavras-chave) podem ser obtidas. As seguintes medidas de similaridade term são fornecidas como extensões na string:
Damerau–Levenshtein distance é o número mínimo de edições de caracteres únicas (transposições, inserções, exclusões ou substituições) necessárias para alterar um term em outro;edit similarity é uma medida normalizada da Damerau–Levenshtein distance em uma escala de 0,0 a 1,0, calculada dividindo a diferença entre a distância máxima da edição (soma do comprimento dos dois termos) e a editDistance computada, pela distância máxima de edição;length distance retorna o valor absoluto da diferença de comprimento entre dois termos;character similarity retorna a similaridade dois termos, no que se refere à coleta de caracteres exclusivos em cada termo em uma escala de 0,0 a 1,0;length similarity retorna a semelhança de comprimento entre dois termos em uma escala de 0,0 a 1,0 em uma escala de log (1 - o log da razão dos comprimentos do termo); eJaccard similarity mede a similaridade entre os conjuntos de amostras finitas e é definida como o tamanho da interseção dividida pelo tamanho da união dos conjuntos de amostras. A classe Termostimilaridade enumera todas as medidas de similaridade de dois termos e fornece a propriedade TermSimilarity.similarity que combina as quatro medidas em um único valor.
A classe de termos de termos também fornece uma função para dividir termos em k-grams , usados em algoritmos de correção de feitiços.
( de volta ao topo )
No pubspec.yaml do seu projeto Flutter, adicione a seguinte dependência:
dependencies :
text_analysis : <latest version> No seu arquivo de código, adicione a importação da biblioteca text_analysis. Isso também importará a classe Porter2Stemmer do pacote porter_2_stemmer .
// import the core classes
import 'package:text_analysis/text_analysis.dart' ;
Para usar as extensões e/ou definições de tipo do pacote, adicione também qualquer uma das seguintes importações:
// 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' ;
A tokenização básica em inglês pode ser realizada usando uma instância de const estática English.analyzer sem filtro de token:
// 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 ));Para analisar o texto ou um documento, hidrate um documento de texto para obter as estatísticas de texto e as pontuações de legibilidade:
// 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" Para comparar os termos, ligue para a extensão desejada no term , ou o método estático da classe Termimilarity:
// 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]
//
Por favor, veja os exemplos para obter mais detalhes.
( de volta ao topo )
As principais interfaces da biblioteca text_analysis são descritas brevemente nesta seção. Consulte a documentação para obter detalhes.
A API contém uma quantidade razoável de placas de caldeira, mas pretendemos tornar o código o mais legível, extensível e reutilizável possível:
interface > implementation mixin > base-class > implementation class pattern :interface é uma classe abstrata que expõe campos e métodos, mas não contém código de implementação. A interface pode expor um construtor de fábrica que retorna uma instância implementation class ;implementation mixin implementa os métodos da classe de interface , mas não os campos de entrada;base-class é uma classe abstrata com o implementation mixin e expõe um construtor const generativo sem nome e sem nome para subclasses. A intenção é que implementation classes estendam a base class , substituindo os campos de entrada interface com as propriedades finais passadas por meio de um construtor generativo const.( de volta ao topo )
A classe de termos de termos fornece as seguintes medidas de similaridade entre dois termos:
characterSimilarity retornam a similaridade dois termos, no que se refere à coleta de caracteres exclusivos em cada termo em uma escala de 0,0 a 1,0;editDistance retorna a Damerau–Levenshtein distance , o número mínimo de edições de caracteres únicos (transposições, inserções, deleções ou substituições) necessárias para alterar um term em outro;editSimilarity retorna uma medida normalizada da Damerau–Levenshtein distance em uma escala de 0,0 a 1,0, calculada dividindo a diferença entre a distância máxima de edição (soma do comprimento dos dois termos) e a editDistance calculada, pela distância máxima de edição;lengthDistance retorna o valor absoluto da diferença de comprimento entre dois termos;lengthSimilarity retorna a semelhança de comprimento entre dois termos em uma escala de 0,0 a 1,0 em uma escala de log (1 - o log da proporção dos comprimentos do termo);jaccardSimilarity retorna o índice de similaridade Jaccard de dois termos.Para comparar um termo com uma coleção de outros termos, também são fornecidos os seguintes métodos estáticos:
editDistanceMap retorna um hashmap de terms à sua editSimilarity com um termo;editSimilarityMap retorna um hashmap de terms à sua editSimilarity com um termo;lengthSimilarityMap retorna um hashmap de terms à sua lengthSimilarity com um termo;jaccardSimilarityMap retorna um hashmap de terms para o índice de similaridade Jaccard com um termo;termSimilarityMap retorna um hashmap de terms à termos de termos com um termo;termSimilarities , editSimilarities , characterSimilarities , lengthSimilarities e jaccardSimilarities retornam uma lista de valores de [similarityIndex] para termos candidatos; ematches retorna as melhores correspondências dos terms para um termo, em ordem decrescente de similaridade de termo (melhor correspondência primeiro).As comparações de string não são sensíveis ao minúsculas.
A classe Textsimilaridade baseia -se em métodos de extensão que podem ser importados da biblioteca de extensões.
( de volta ao topo )
A interface textAnalyzer expõe propriedades e métodos específicos da linguagem usados na análise de texto:
O LatinLanguageanalyzer implementa os métodos de interface TextAnalyzer para idiomas que usam o conjunto de alfabetos/caracteres latino/romano.
A implementação em inglês do TextAnalyzer está incluída nesta biblioteca e mistura a mixmixina LatinLanguageAnalyzerMixin .
( de volta ao topo )
O modelo de objeto TextDocument enumera os parágrafos , frases , termos , palavras-chave de um documento de texto, contagem de sílabas e tokens e fornece funções que retornam medidas de análise de texto:
O TextDocumentMixin implementa o comprimento das médias, o comprimento das médias, os métodos WordCount, FleschreadingeasesEcores e FleschkincaidGradlevel.
Um documento de texto pode ser hidratado com o construtor de fábrica sem nome ou usando os métodos estáticos de analisar ou analisar. Como alternativa, estenda a classe TextDocumentBase.
( de volta ao topo )
As seguintes definições são usadas ao longo da documentação:
corpus - A coleta de documents para os quais um index é mantido.cosine similarity - similaridade de dois vetores medidos como cosseno do ângulo entre eles, ou seja, o produto dot dos vetores divididos pelo produto de seus comprimentos euclidianos (da Wikipedia).character filter - filtra caracteres do texto na preparação da tokenização.Damerau–Levenshtein distance - Uma métrica para medir a edit distance entre dois terms , contando o número mínimo de operações (inserções, deleções ou substituições de um único caractere, ou transposição de dois caracteres adjacentes) necessários para alterar um term para o outro (da Wikipedia).dictionary (in an index) - Um hash de terms ( vocabulary ) à frequência de ocorrência nos documentos corpus .document - Um registro no corpus , que possui um identificador exclusivo ( docId ) na chave primária do corpus e que contém um ou mais campos de texto indexados.document frequency (dFt) - O número de documentos no corpus que contêm um termo.edit distance - Uma medida de quão diferentes são dois termos contando o número mínimo de operações necessárias para transformar uma string na outra (da Wikipedia).etymology - O estudo da história da forma de palavras e, por extensão, a origem e a evolução de seu significado semântico ao longo do tempo (da Wikipedia).Flesch reading ease score - uma medida de legibilidade calculada a partir do comprimento da frase e do comprimento da palavra em uma escala de 100 pontos. Quanto maior a pontuação, mais fácil é entender o documento (da Wikipedia).Flesch-Kincaid grade level - Uma medida de legibilidade em relação ao nível escolar dos EUA. Também é calculado a partir do comprimento da frase e do comprimento da palavra (da Wikipedia).IETF language tag - um código ou tag padronizado que é usado para identificar idiomas humanos na Internet. (da Wikepedia).index - Um índice invertido usado para procurar referências document do corpus contra um vocabulary de terms .index-elimination - Selecionando um subconjunto das entradas em um índice em que o term está na coleta de terms em uma frase de pesquisa.inverse document frequency (iDft) - Uma medida normalizada de quão raro é um term no corpus. É definido como log (N / dft) , onde n é o número total de termos no índice. O iDft de um termo raro é alto, enquanto o iDft de um termo frequente provavelmente será baixo.Jaccard index mede a similaridade entre os conjuntos de amostras finitas e é definido como o tamanho da interseção dividida pelo tamanho da união dos conjuntos de amostras (da Wikipedia).Map<String, dynamic> é um acrônimo para "Java Script Object Notation" , um formato comum para os dados persistentes.k-gram - Uma sequência de (qualquer) K caracteres consecutivos de um term . Um k-gram pode começar com "$", denotando o início do termo e termina com "$", denotando o final do termo. Os 3 gramas para "Castle" são { lemma or lemmatizer - Lemmatização (ou Lemmatização) em Linguística é o processo de agrupamento das formas flexionadas de uma palavra para que possam ser analisadas como um único item, identificado pelo lema da palavra ou da forma de dicionário (da Wikipedia).n-gram (às vezes também chamado de Q-Gram) é uma sequência contígua de n itens de uma determinada amostra de texto ou fala. Os itens podem ser fonemas, sílabas, letras, palavras ou pares de bases de acordo com o aplicativo. Os n-grams normalmente são coletados de um corpus de texto ou fala. Quando os itens são palavras, n-grams também podem ser chamados de telhas (da Wikipedia).Natural language processing (NLP) é um subcampo de linguística, ciência da computação e inteligência artificial relacionada às interações entre computadores e linguagem humana, em particular como programar computadores para processar e analisar grandes quantidades de dados de linguagem natural (da Wikipedia).Part-of-Speech (PoS) tagging é a tarefa de rotular cada palavra em uma sequência de palavras com uma tag indicando qual categoria sintática lexical assume na sequência fornecida (da Wikipedia).Phonetic transcription - a representação visual de sons de fala (ou telefones) por meio de símbolos. O tipo mais comum de transcrição fonética usa um alfabeto fonético, como o alfabeto fonético internacional (da Wikipedia).postings - Um índice separado que registra que documents o vocabulary ocorre em. Em um index posicional, as postagens também registram as posições de cada term no text para criar um index invertido posicional.postings list - um registro das posições de um term em um document . Uma posição de um term refere -se ao índice do term em uma matriz que contém todos os terms no text . Em um index zonado, a postings lists registra as posições de cada term no text uma zone .stem or stemmer - Stemming é o processo de redução de palavras flexionadas (ou às vezes derivadas) para sua palavra, base, base ou raiz (geralmente uma forma de palavra escrita) (da Wikipedia).stopwords - palavras comuns em um idioma excluído da indexação.term - uma palavra ou frase indexada do corpus . O term pode diferir da palavra real usada no corpus, dependendo do tokenizer usado.term filter - Filtros termos indesejados de uma coleção de termos (por exemplo, palavras de parada), interrompe os termos compostos em termos separados e / ou manipula os termos, invocando um stemmer e / ou lemmatizer .term expansion - Encontrar termos com ortografia semelhante (por exemplo, correção de ortografia) ou sinônimos para um termo.term frequency (Ft) - A frequência de um term em um índice ou objeto indexado.term position - o índice baseado em zero de um term em uma matriz ordenada de terms tokenizada no corpus .text - o conteúdo indexável de um document .token - Representação de um term em uma fonte de texto retornada por um tokenizer . O token pode incluir informações sobre o term como sua (s) posição (s) ( term position ) no texto ou frequência de ocorrência ( term frequency ).token filter - Retorna um subconjunto de tokens da saída do tokenizer.tokenizer - Uma função que retorna uma coleção de token s do text , após aplicar um filtro de caracteres, filtro term , Stemmer e / ou Lemmatizer.vocabulary - A coleção de terms indexados do corpus .zone - O campo ou zona de um documento em que ocorre um termo ocorre, usado para índices paramétricos ou onde a pontuação e a classificação dos resultados da pesquisa atribuem uma pontuação mais alta aos documentos que contêm um termo em uma zona específica (por exemplo, o título, em vez do corpo de um documento).( de volta ao topo )
( de volta ao topo )
Se você encontrar um bug, preencha um problema.
Este projeto é um pacote de suporte para um projeto de receita que tem prioridade de chamadas de recursos; portanto, seja paciente se não respondermos imediatamente a problemas ou receber solicitações.