Lista de Características - aiboxlab/nlp GitHub Wiki

Essa página contém o conjunto de características disponibilizadas pela biblioteca.

Português Brasileiro (aibox-nlp[BR])

A tabela abaixo possui um breve descrição dos diferentes extratores de características. Cada extrator provê uma ou mais características. Todos extratores são encontrados em aibox.nlp.features.portuguese. A coluna "Identificador" contém o nome utilizada para carregamento através do módulo aibox.nlp.factory.

Um exemplo com todas as características extraídas se encontra no Kaggle em Features from aibox-nlp, no qual o conjunto de características é disponibilizado para o dataset Brazilian Portuguese Narrative Essays Dataset.

Extrator Identificador Descrição #Características
AgreementExtractor agreementBR Concordância verbal e nominal. 2
BERTSimilarityExtractor bertSimilarityBR Similaridade cosseno entre textos baseadas nos embeddings do BERT. 1
CohMetrixExtractor cohmetrixBR Características do CohMetrix-BR. 87
ConjugationExtractor conjugationBR Conjugação verbal. 5
ConnectivesExtractorV1 connectivesV1BR Uso de conectivos. 33
ConnectivesExtractorV2 connectivesV2BR Uso de conectivos. 12
DescriptiveExtractor descriptiveBR Características descritivas do texto 11
FuzzySearchSimilarityExtractor fuzzySimilarity Similaridade de texto através de aproximação de strings. 8
LexicalDiversityExtractor lexicalDiversityBR Diversidade léxica. 15
LiwcExtractor liwcBR Características derivadas do LIWC. 64
NILCSimilarityExtractor nilcSimilarityBR Similaridade entre textos adotadas pelo NILC-Metrix. 4
OrthographyExtractor orthographyBR Erros ortográficos através do LangTool. 1
OverlapExtractor overlapBR Sobreposição de textos. 2
ReadabilityExtractor readabilityBR Legibilidade textual. 7
ReferentialCohesionExtractor referentialCohesionBR Coesão referencial. 9
RegencyExtractor regencyBR Regência nominal e verbal. 2
SemanticExtractorTransformers semanticCohesionTransformersBR Coesão semântica com Transformers. 10
SemanticExtractor semanticCohesionBR Coesão semântica com LSA. 11
SequentialCohesionExtractor sequentialCohesionBR Coesão sequencial. 7
SyntacticComplexityExtractor syntacticComplexityBR Complexidade sintática. 16
TextualSimplicityExtractor textualSimplicityBR Simplicidade textual. 8
TFIDFSimilarityExtractor tfidfSimilarity Similaridade TF-IDF. 6
WordMorphosyntacticInformationExtractor wordMorphosyntacticInformationBR Informações morfossintáticas das palavras. 39
WordSegmentationExtractor wordSegmentationBR Segmentação de palavras. 2
--- --- --- 362

Como realizar extração de características?

1. Obtendo um extrator manualmente

É possível importar um extrator manualmente e utilizar os métodos definidos em FeatureExtractor:

from aibox.nlp.features.portuguese.descriptive import DescriptiveExtractor

# Instanciando o extrator com as configurações padrão
extractor = DescriptiveExtractor()
text = "Esse é um texto de exemplo.\nNele temos algumas palavras e quebras de linha."

# Extraindo características
features = extractor.extract(text)

print(features)
# Output: DescriptiveFeatures(total_paragraphs=2, total_sentences=2, sentences_per_paragraph=1.0,
# syllables_per_content_word=2.1666666666666665, total_words=15, words_per_sentence=7.5,
# sentence_length_max=8, sentence_length_min=7, sentence_length_std=0.5, total_stopwords=9,
# stopwords_ratio=0.6428571428571429)

# Também é possível combinar múltiplos extratores:
from aibox.nlp.features.utils.aggregator import AggregatedFeatureExtractor
from aibox.nlp.features.portuguese.textual_simplicity import TextualSimplicityExtractor

extractor = AggregatedFeatureExtractor(extractor, TextualSimplicityExtractor())

# Os métodos são iguais:
print(extractor.extract(text).as_dict())
# Output: {'dialog_pron_ratio': 0.0, 'easy_conj_ratio': 0.4666666666666667, 'hard_conj_ratio': 0.0, 'long_sentence_ratio': 0.0,
# 'medium_long_sentence_ratio': 0.0, 'medium_short_sentence_ratio': 0.0, 'sentence_length_max': 8, 'sentence_length_min': 7,
# 'sentence_length_std': 0.5, 'sentences_per_paragraph': 1.0, 'short_sentence_ratio': 1.0, 'simple_word_ratio': 0.0, 
# 'stopwords_ratio': 0.6428571428571429, 'syllables_per_content_word': 2.1666666666666665, 
# 'total_paragraphs': 2, 'total_sentences': 2, 'total_stopwords': 9, 'total_words': 15,
# 'words_per_sentence': 7.5}

2. Utilizando o módulo factory

Alternativamente, é possível utilizar as facilidades do módulo aibox.nlp.factory:

from aibox.nlp.factory import get_extractor

extractor = get_extractor(["descriptiveBR", "textualSimplicityBR"])
text = "Esse é um texto de exemplo.\nNele temos algumas palavras e quebras de linha."

print(extractor.extract(text).as_dict())
# Output: {'dialog_pron_ratio': 0.0, 'easy_conj_ratio': 0.4666666666666667, 'hard_conj_ratio': 0.0, 'long_sentence_ratio': 0.0,
# 'medium_long_sentence_ratio': 0.0, 'medium_short_sentence_ratio': 0.0, 'sentence_length_max': 8, 'sentence_length_min': 7,
# 'sentence_length_std': 0.5, 'sentences_per_paragraph': 1.0, 'short_sentence_ratio': 1.0, 'simple_word_ratio': 0.0, 
# 'stopwords_ratio': 0.6428571428571429, 'syllables_per_content_word': 2.1666666666666665, 
# 'total_paragraphs': 2, 'total_sentences': 2, 'total_stopwords': 9, 'total_words': 15,
# 'words_per_sentence': 7.5}