
Saltar a la sección:
El paquete text_analysis proporciona métodos para tokenizar el texto, calcular los puntajes de lectura para un documento y evaluar la similitud de terms . Está destinado a ser utilizado en el procesamiento del lenguaje natural ( NLP ) como parte de un sistema de recuperación de información.
Se divide en tres bibliotecas:
Consulte las referencias para obtener más información sobre los sistemas de recuperación de información y la teoría detrás de esta biblioteca.
La tokenización comprende los siguientes pasos:
term splitter divide el texto a una lista de términos en lugares apropiados como el espacio blanco y la puntuación de la oración media;character filter manipula los términos antes de la tokenización (por ejemplo, cambiar de caso y / o eliminar caracteres no palabras);term filter manipula los términos dividiendo los términos compuestos o con guiones o aplicando vallas y lematización. El termFilter también puede filtrar stopwords ; ytokenizer convierte los términos en una colección de tokens que contienen versiones tokenizadas del término y un puntero a la posición del término tokenizado (N-gram) en el texto de origen. Los tokens se generan para palabras clave, términos y/o n-gramos, dependiendo de la TokenizingStrategy seleccionada. El rango N-Gram deseado se puede pasar cuando tokenizando el texto o el documento. 
TextDocument enumera los párrafos , oraciones , términos y tokens de un documento de texto y calcula medidas de legibilidad:
Flesch reading ease score , una medida de lectura calculada a partir de la longitud de la oración y la longitud de la palabra en una escala de 100 puntos; yFlesch-Kincaid grade level , una medida de lectura en relación con el nivel de grado escolar de los Estados Unidos. El TextDocument también incluye un gráfico de concurrencia generado utilizando el algoritmo rápido de extracción de palabras clave (RAKE), del que se pueden obtener las palabras clave (y puntajes de palabras clave). Las siguientes medidas de similitud term se proporcionan como extensiones en la cadena:
Damerau–Levenshtein distance es el número mínimo de ediciones de un solo personaje (transposiciones, inserciones, deleciones o sustituciones) requeridas para cambiar un term a otro;edit similarity es una medida normalizada de Damerau–Levenshtein distance en una escala de 0.0 a 1.0, calculada dividiendo la diferencia entre la distancia máxima de edición (suma de la longitud de los dos términos) y la editDistance calculada, por la distancia de edición máxima;length distance devuelve el valor absoluto de la diferencia de longitud entre dos términos;character similarity devuelve la similitud dos términos en relación con la colección de caracteres únicos en cada término en una escala de 0.0 a 1.0;length similarity devuelve la similitud en la longitud entre dos términos en una escala de 0.0 a 1.0 en una escala log (1 - el registro de la relación de las longitudes de término); yJaccard similarity mide la similitud entre los conjuntos de muestras finitas, y se define como el tamaño de la intersección dividido por el tamaño de la unión de los conjuntos de muestras. La clase de TérmesiMility enumera todas las medidas de similitud de dos términos y proporciona la propiedad TermSimilarity.similarity Que combina las cuatro medidas en un solo valor.
La clase de TérmesiMility también proporciona una función para dividir los términos en k-grams , utilizados en algoritmos de corrección de hechizos.
( De vuelta a la cima )
En el pubspec.yaml de su proyecto Flutter, agregue la siguiente dependencia:
dependencies :
text_analysis : <latest version> En su archivo de código, agregue la importación de la biblioteca Text_analysis. Esto también importará la clase Porter2Stemmer desde el paquete porter_2_stemmer .
// import the core classes
import 'package:text_analysis/text_analysis.dart' ;
Para usar las extensiones y/o definiciones de tipo del paquete, también agregue cualquiera de las siguientes importaciones:
// 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' ;
La tokenización básica en inglés se puede realizar utilizando una instancia de constante de análisis English.analyzer sin 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 analizar el texto o un documento, hidrate un Documento Text para obtener las estadísticas de texto y los puntajes de lectura:
// 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 los términos, llame a la extensión deseada en el term o el método estático de la clase de TérmicaMilarity:
// 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]
//
Consulte los ejemplos para obtener más detalles.
( De vuelta a la cima )
Las interfaces clave de la biblioteca text_analysis se describen brevemente en esta sección. Consulte la documentación para obtener más detalles.
La API contiene una buena cantidad de placa de caldera, pero nuestro objetivo es hacer que el código sea lo más legible, extensible y reutilizable como sea posible:
interface > implementation mixin > base-class > implementation class pattern :interface es una clase abstracta que expone campos y métodos pero no contiene código de implementación. La interface puede exponer un constructor de fábrica que devuelve una instancia implementation class ;implementation mixin implementa los métodos de la clase de interface , pero no los campos de entrada;base-class es una clase abstracta con la implementation mixin y expone un constructor constante de constante predeterminado y sin nombre para las subclases. La intención es que implementation classes extienden la base class , anulando los campos de entrada de interface con las propiedades finales pasadas a través de un constructor generativo constante.( De vuelta a la cima )
La clase de TérmesiMilarity proporciona las siguientes medidas de similitud entre dos términos:
characterSimilarity devuelve la similitud dos términos en relación con la colección de caracteres únicos en cada término en una escala de 0.0 a 1.0;editDistance Devuelve la Damerau–Levenshtein distance , el número mínimo de ediciones de un solo personaje (transposiciones, inserciones, deleciones o sustituciones) requeridos para cambiar un term a otro;editSimilarity devuelve una medida normalizada de Damerau–Levenshtein distance en una escala de 0.0 a 1.0, calculada dividiendo la diferencia entre la distancia máxima de edición (suma de la longitud de los dos términos) y la editDistance calculada, por la distancia de edición máxima;lengthDistance devuelve el valor absoluto de la diferencia de longitud entre dos términos;lengthSimilarity devuelve la similitud en longitud entre dos términos en una escala de 0.0 a 1.0 en una escala log (1 - el registro de la relación de las longitudes de término);jaccardSimilarity devuelve el índice de similitud de Jaccard de dos términos.Para comparar un término con una colección de otros términos, también se proporcionan los siguientes métodos estáticos:
editDistanceMap devuelve un hashmap de terms a su editSimilarity con un término;editSimilarityMap devuelve un hashmap de terms a su editSimilarity con un término;lengthSimilarityMap devuelve un hashmap de terms a su lengthSimilarity con un término;jaccardSimilarityMap devuelve un hashmap de terms al índice de similitud de Jaccard con un término;termSimilarityMap devuelve un hashmap de terms a los términosiMILITITY con un término;termSimilarities , editSimilarities , characterSimilarities , lengthSimilarities y jaccardSimilarities devuelven una lista de valores [similitudesindex] para términos candidatos; ymatches devuelven las mejores coincidencias de terms para un término, en orden descendente de similitud de término (el mejor partido primero).Las comparaciones de cadenas no son sensibles a los casos.
La clase TextSimilarity se basa en métodos de extensión que se pueden importar desde la biblioteca de extensiones.
( De vuelta a la cima )
La interfaz TextAnalyzer expone las propiedades y métodos específicos del lenguaje utilizados en el análisis de texto:
El latinLanguageAnalyzer implementa los métodos de interfaz TextAnalyzer para idiomas que usan el conjunto de caracteres/alfabeto latino/romano.
La implementación en inglés de Textanalyzer se incluye en esta biblioteca y se mezcla en la LatinLanguageAnalyzerMixin .
( De vuelta a la cima )
El modelo de objeto TextDocument enumera los párrafos de un documento de texto, oraciones , términos , palabras clave , n-gramos , recuento de sílabas y tokens y proporciona funciones que devuelven medidas de análisis de texto:
El TextDocumentMixin implementa los métodos promediados de la longitud, promeSsyllableCount, WordCount, FleschreadingEassescore y FleschkinCaidgradelevel.
Se puede hidratarse con el constructor de fábrica no identificado o utilizando los métodos estáticos analize o analizeJson. Alternativamente, extienda la clase TextDocumentBase.
( De vuelta a la cima )
Las siguientes definiciones se utilizan a lo largo de la documentación:
corpus : la colección de documents para los cuales se mantiene un index .cosine similarity : similitud de dos vectores medidos como el coseno del ángulo entre ellos, es decir, el producto DOT de los vectores divididos por el producto de sus longitudes euclidianas (de Wikipedia).character filter : filtra caracteres del texto en preparación de la tokenización.Damerau–Levenshtein distance : una métrica para medir la edit distance entre dos terms contando el número mínimo de operaciones (inserciones, deleciones o sustituciones de un solo carácter, o transposición de dos caracteres adyacentes) requerido para cambiar un term en el otro (desde Wikipedia).dictionary (in an index) : un hash de terms ( vocabulary ) a la frecuencia de ocurrencia en los documentos corpus .document : un registro en el corpus , que tiene un identificador único ( docId ) en la clave principal del corpus y que contiene uno o más campos de texto que están indexados.document frequency (dFt) : el número de documentos en el corpus que contienen un término.edit distance : una medida de cuán diferentes son dos términos contando el número mínimo de operaciones requeridas para transformar una cadena en la otra (de Wikipedia).etymology : el estudio de la historia de la forma de las palabras y, por extensión, el origen y la evolución de su significado semántico a lo largo del tiempo (de Wikipedia).Flesch reading ease score : una medida de lectura calculada a partir de la longitud de la oración y la longitud de la palabra en una escala de 100 puntos. Cuanto mayor sea el puntaje, más fácil será comprender el documento (de Wikipedia).Flesch-Kincaid grade level : una medida de lectura en relación con el nivel de grado escolar de los Estados Unidos. También se calcula a partir de la longitud de la oración y la longitud de la palabra (de Wikipedia).IETF language tag : un código o etiqueta estandarizada que se utiliza para identificar los idiomas humanos en Internet. (de Wikepedia).index : un índice invertido utilizado para buscar referencias document del corpus contra un vocabulary de terms .index-elimination : seleccionar un subconjunto de las entradas en un índice donde el term está en la colección de terms en una frase de búsqueda.inverse document frequency (iDft) : una medida normalizada de cuán raro es un term en el corpus. Se define como log (N / dft) , donde n es el número total de términos en el índice. El iDft de un término raro es alto, mientras que es probable que el iDft de un término frecuente sea bajo.Jaccard index mide la similitud entre los conjuntos de muestras finitas, y se define como el tamaño de la intersección dividido por el tamaño de la unión de los conjuntos de muestras (de Wikipedia).Map<String, dynamic> es un acrónimo de "Java Script Object Notation" , un formato común para los datos persistentes.k-gram : una secuencia de (cualquier) k caracteres consecutivos de un term . Un k-gram puede comenzar con "$", denotar el inicio del término y terminar con "$", denotando el final del término. Los 3 gramos para "Castle" son { lemma or lemmatizer - Lematización (o lematización) en la lingüística es el proceso de agrupación de las formas inflexionadas de una palabra para que puedan analizarse como un solo elemento, identificado por el lema de la palabra, o la forma de diccionario (de Wikipedia).n-gram (a veces también llamado Q-Gram) es una secuencia contigua de n elementos de una muestra dada de texto o habla. Los elementos pueden ser fonemas, sílabas, letras, palabras o pares de bases de acuerdo con la aplicación. Los n-grams generalmente se recopilan de un texto o corpus de habla. Cuando los elementos son palabras, n-grams también pueden llamarse tejas (de Wikipedia).Natural language processing (NLP) es un subcampo de lingüística, informática e inteligencia artificial que se refiere a las interacciones entre las computadoras y el lenguaje humano, en particular cómo programar las computadoras para procesar y analizar grandes cantidades de datos del lenguaje natural (de Wikipedia).Part-of-Speech (PoS) tagging es la tarea de etiquetar cada palabra en una secuencia de palabras con una etiqueta que indica qué categoría sintáctica léxica supone en la secuencia dada (de Wikipedia).Phonetic transcription : la representación visual de los sonidos del habla (o teléfonos) por medio de símbolos. El tipo más común de transcripción fonética utiliza un alfabeto fonético, como el alfabeto fonético internacional (de Wikipedia).postings : un índice separado que registra en qué documents se produce el vocabulary . En un index posicional, las publicaciones también registran las posiciones de cada term en el text para crear un index invertido posicional.postings list : un registro de las posiciones de un term en un document . Una posición de un term se refiere al índice del term en una matriz que contiene todos los terms en el text . En un index zonado, las postings lists registrar las posiciones de cada term en la zone de text .stem or stemmer - STEMMING es el proceso de reducir las palabras infectadas (o a veces derivadas) a su palabra, base o forma de raíz (generalmente una forma de palabra escrita) (de Wikipedia).stopwords : palabras comunes en un idioma que se excluyen de la indexación.term : una palabra o frase que está indexada desde el corpus . El term puede diferir de la palabra real utilizada en el corpus dependiendo del tokenizer utilizado.term filter : filtra los términos no deseados de una colección de términos (por ejemplo, palabras de parada), divide los términos compuestos en términos separados y / o manipula los términos invocando un stemmer y / o lemmatizer .term expansion : encontrar términos con ortografía similar (por ejemplo, corrección de ortografía) o sinónimos para un término.term frequency (Ft) : la frecuencia de un term en un índice o objeto indexado.term position : el índice basado en cero de un term en una matriz ordenada de terms tokenizados desde el corpus .text : el contenido indexable de un document .token : representación de un term en una fuente de texto devuelta por un tokenizer . El token puede incluir información sobre el term , como su posición (s) ( term position ) en el texto o frecuencia de ocurrencia ( term frequency ).token filter : devuelve un subconjunto de tokens de la salida de tokenizador.tokenizer : una función que devuelve una colección de token del text , después de aplicar un filtro de caracteres, filtro term , stemmer y / o lemmatizer.vocabulary : la colección de terms indexados desde el corpus .zone : el campo o zona de un documento en el que se produce un término, utilizado para índices paramétricos o donde la puntuación y la clasificación de los resultados de búsqueda atribuyen una puntuación más alta a los documentos que contienen un término en una zona específica (por ejemplo, el título en lugar de que el cuerpo de un documento).( De vuelta a la cima )
( De vuelta a la cima )
Si encuentra un error, por favor llena un problema.
Este proyecto es un paquete de apoyo para un proyecto de ingresos que tiene una llamada prioritaria sobre los recursos, por lo tanto, tenga paciencia si no respondemos de inmediato a los problemas o extrae solicitudes.