Maison > Article > développement back-end > Comment utiliser la technologie d’extraction de fonctionnalités de texte en Python ?
Python est un langage de programmation populaire qui peut être utilisé pour traiter des données textuelles. Dans les domaines de la science des données et du traitement du langage naturel, l’extraction de caractéristiques de texte est une technique importante qui convertit le texte brut en langage naturel en vecteurs numériques destinés à être utilisés dans les algorithmes d’apprentissage automatique et d’apprentissage profond. Cet article explique comment utiliser la technologie d'extraction de fonctionnalités de texte en Python.
1. Prétraitement des données texte
Avant l'extraction des caractéristiques du texte, un simple prétraitement du texte original est requis. Le prétraitement comprend généralement les étapes suivantes :
Pour le prétraitement de texte en Python, nous nous appuyons principalement sur des bibliothèques open source de traitement du langage naturel telles que nltk et spaCy. Ce qui suit est un exemple de code Python qui peut implémenter les étapes de prétraitement ci-dessus pour le texte anglais :
import string import nltk from nltk.corpus import stopwords from nltk.stem import PorterStemmer from nltk.tokenize import word_tokenize def preprocess_text(text): # 将文本转换为小写 text = text.lower() # 去除标点符号 text = text.translate(str.maketrans("", "", string.punctuation)) # 分词 words = word_tokenize(text) # 去除停用词 words = [word for word in words if word not in stopwords.words("english")] # 词干化 stemmer = PorterStemmer() words = [stemmer.stem(word) for word in words] # 返回预处理后的文本 return " ".join(words)
2. Modèle de sac de mots
Dans l'extraction de fonctionnalités de texte, le plus couramment utilisé Le modèle est le modèle Sac de Mots. Le modèle du sac de mots suppose que les mots du texte constituent un ensemble non ordonné, utilisant chaque mot comme caractéristique et la fréquence de leur apparition dans le texte comme valeur de caractéristique. De cette manière, un texte peut être représenté comme un vecteur constitué de fréquences de mots.
Il existe de nombreuses bibliothèques open source en Python qui peuvent être utilisées pour créer des modèles de sacs de mots, tels que sklearn et nltk. Ce qui suit est un exemple de code Python, qui peut utiliser sklearn pour implémenter le modèle bag-of-word pour le texte anglais :
from sklearn.feature_extraction.text import CountVectorizer # 定义文本数据 texts = ["hello world", "hello python"] # 构建词袋模型 vectorizer = CountVectorizer() vectorizer.fit_transform(texts) # 输出词袋模型的特征 print(vectorizer.get_feature_names()) # 输出文本的特征向量 print(vectorizer.transform(texts).toarray())
Dans le code ci-dessus, CountVectorizer est d'abord utilisé pour construire le bag-of- modèle de mot et les données texte "hello world" et "hello python" en entrée. Enfin, utilisez la méthode get_feature_names() pour obtenir les caractéristiques du modèle sac de mots, utilisez la méthode transform() pour convertir le texte en vecteur de caractéristiques et utilisez la méthode toarray() pour représenter la matrice clairsemée sous forme de vecteur de caractéristiques. tableau NumPy général.
3. Modèle TF-IDF
Le modèle du sac de mots peut bien représenter la fréquence des mots dans le texte, mais il ne prend pas en compte l'importance des différents mots pour la classification du texte différents. Par exemple, dans les problèmes de classification de texte, certains mots peuvent apparaître dans plusieurs catégories de texte et ne jouent pas un grand rôle dans la distinction des différentes catégories. Au contraire, certains mots peuvent apparaître uniquement dans une catégorie spécifique de texte et sont importants pour distinguer différentes catégories.
Afin de résoudre ce problème, une technologie d'extraction de fonctionnalités de texte plus avancée consiste à utiliser le modèle TF-IDF. TF-IDF (Term Frequency-Inverse Document Frequency) est une méthode statistique utilisée pour évaluer l’importance d’un mot dans un document. Il calcule la valeur TF-IDF d'un mot en multipliant la fréquence du mot dans le document par l'inverse de la fréquence de son apparition dans l'ensemble de la collection de documents.
Il existe également de nombreuses bibliothèques open source en Python qui peuvent être utilisées pour créer des modèles TF-IDF, tels que sklearn et nltk. Voici un exemple de code Python, qui peut utiliser sklearn pour implémenter le modèle TF-IDF pour le texte anglais :
from sklearn.feature_extraction.text import TfidfVectorizer # 定义文本数据 texts = ["hello world", "hello python"] # 构建TF-IDF模型 vectorizer = TfidfVectorizer() vectorizer.fit_transform(texts) # 输出TF-IDF模型的特征 print(vectorizer.get_feature_names()) # 输出文本的特征向量 print(vectorizer.transform(texts).toarray())
Dans le code ci-dessus, utilisez d'abord TfidfVectorizer pour créer le modèle TF-IDF et combinez les données texte "hello world" et "hello python" en entrée. Enfin, utilisez la méthode get_feature_names() pour obtenir les caractéristiques du modèle TF-IDF, utilisez la méthode transform() pour convertir le texte en vecteur de caractéristiques et utilisez la méthode toarray() pour représenter la matrice clairsemée comme un NumPy général. tableau.
4. Modèle Word2Vec
En plus du modèle sac de mots et du modèle TF-IDF, il existe également une technologie avancée d'extraction de fonctionnalités de texte appelée modèle Word2Vec . Word2Vec est un modèle de réseau neuronal développé par Google qui est utilisé pour représenter les mots sous forme de vecteur dense afin que les mots similaires soient plus proches dans l'espace vectoriel.
En Python, le modèle Word2Vec peut être facilement implémenté à l'aide de la bibliothèque gensim. Voici un exemple de code Python, qui peut utiliser la bibliothèque gensim pour implémenter le modèle Word2Vec pour le texte anglais :
from gensim.models import Word2Vec import nltk # 定义文本数据 texts = ["hello world", "hello python"] # 分词 words = [nltk.word_tokenize(text) for text in texts] # 构建Word2Vec模型 model = Word2Vec(size=100, min_count=1) model.build_vocab(words) model.train(words, total_examples=model.corpus_count, epochs=model.iter) # 输出单词的特征向量 print(model["hello"]) print(model["world"]) print(model["python"])
Dans le code ci-dessus, la bibliothèque nltk est d'abord utilisée pour segmenter le texte, puis la classe Word2Vec est utilisée pour construire le modèle Word2Vec, où le paramètre size spécifie la dimension vectorielle de chaque mot et le paramètre min_count spécifie la fréquence minimale des mots, qui est 1 dans cet exemple, afin que tous les mots soient pris en compte dans le modèle. . Ensuite, utilisez la méthode build_vocab() pour créer le vocabulaire et la méthode train() pour entraîner le modèle. Enfin, le vecteur de caractéristiques de chaque mot est accessible à l'aide de crochets, tels que model["hello"], model["world"], model["python"].
Summary
Cet article présente comment utiliser la technologie d'extraction de fonctionnalités de texte en Python, y compris le modèle sac de mots, le modèle TF-IDF et le modèle Word2Vec. Lors de l'utilisation de ces techniques, un simple prétraitement du texte est nécessaire pour surmonter le bruit dans les données textuelles. En outre, il convient de noter que différentes technologies d'extraction de caractéristiques de texte conviennent à différents scénarios d'application et que la technologie appropriée doit être sélectionnée en fonction de problèmes spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!