Python은 텍스트 데이터를 처리하는 데 사용할 수 있는 인기 있는 프로그래밍 언어입니다. 데이터 과학 및 자연어 처리 분야에서 텍스트 특징 추출은 기계 학습 및 딥 러닝 알고리즘에 사용하기 위해 원시 자연어 텍스트를 수치 벡터로 변환하는 중요한 기술입니다. 이 글에서는 Python에서 텍스트 특징 추출 기술을 사용하는 방법을 소개합니다.
1. 텍스트 데이터 전처리
텍스트 특징 추출에 앞서 원본 텍스트에 대해 몇 가지 간단한 전처리를 수행해야 합니다. 전처리에는 일반적으로 다음 단계가 포함됩니다.
Python의 텍스트 전처리를 위해 우리는 주로 nltk 및 spaCy와 같은 오픈 소스 자연어 처리 라이브러리에 의존합니다. 다음은 영어 텍스트에 대해 위의 전처리 단계를 구현할 수 있는 Python 코드 예제입니다.
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. Bag-of-Words 모델
텍스트 특징 추출에서 가장 일반적으로 사용되는 모델은 Bag-of-Words 모델입니다. Bag-of-words 모델은 텍스트의 단어가 순서가 지정되지 않은 집합이라고 가정하고 각 단어를 특징으로 사용하고 텍스트에서 해당 단어가 나타나는 빈도를 특징 값으로 사용합니다. 이러한 방식으로 텍스트는 단어 빈도로 구성된 벡터로 표현될 수 있습니다.
Python에는 sklearn 및 nltk와 같이 단어 단위 모델을 구축하는 데 사용할 수 있는 오픈 소스 라이브러리가 많이 있습니다. 다음은 sklearn을 사용하여 영어 텍스트에 대한 단어주머니 모델을 구현할 수 있는 Python 코드 예제입니다.
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())
위 코드에서 CountVectorizer는 먼저 단어주머니 모델을 구축하는 데 사용되었으며, 텍스트 데이터 "hello world" 및 "hello python"이 입력으로 사용됩니다. 마지막으로 get_feature_names() 메서드를 사용하여 Bag-of-Word 모델의 특징을 얻고,Transform() 메서드를 사용하여 텍스트를 특징 벡터로 변환하고, toarray() 메서드를 사용하여 희소 행렬을 다음과 같이 표현합니다. 일반 NumPy 배열.
3. TF-IDF 모델
단어주머니 모델은 텍스트에 포함된 단어의 빈도를 잘 나타낼 수 있지만 텍스트 분류에 있어 다양한 단어의 중요성을 고려하지 않습니다. 예를 들어 텍스트 분류 문제에서 일부 단어는 여러 텍스트 범주에 나타날 수 있으며 서로 다른 범주를 구별하는 데 큰 역할을 하지 않습니다. 반대로 일부 단어는 특정 텍스트 범주에만 나타날 수 있으며 다른 범주를 구별하는 데 중요합니다.
이 문제를 해결하기 위해 좀 더 발전된 텍스트 특징 추출 기술은 TF-IDF 모델을 사용하는 것입니다. TF-IDF(용어 빈도-역문서 빈도)는 문서에서 단어의 중요도를 평가하는 데 사용되는 통계 방법입니다. 문서 내 단어의 빈도와 전체 문서 모음에서 해당 단어가 나타나는 빈도의 역수를 곱하여 단어의 TF-IDF 값을 계산합니다.
Python에는 sklearn 및 nltk와 같이 TF-IDF 모델을 구축하는 데 사용할 수 있는 오픈 소스 라이브러리도 많이 있습니다. 다음은 sklearn을 사용하여 영어 텍스트에 대한 TF-IDF 모델을 구현할 수 있는 Python 코드의 예입니다.
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())
위 코드에서 TfidfVectorizer는 먼저 TF-IDF 모델을 구축하는 데 사용되었으며 텍스트 데이터 "hello world" 및 "hello python"이 입력으로 사용됩니다. 마지막으로 get_feature_names() 메소드를 사용하여 TF-IDF 모델의 특징을 얻고, 변환() 메소드를 사용하여 텍스트를 특징 벡터로 변환하고, toarray() 메소드를 사용하여 희소 행렬을 일반 NumPy로 표현합니다. 정렬.
4. Word2Vec 모델
Bag-of-words 모델과 TF-IDF 모델 외에도 Word2Vec 모델이라는 고급 텍스트 특징 추출 기술이 있습니다. Word2Vec은 유사한 단어가 벡터 공간에서 더 가까워지도록 단어를 밀집된 벡터로 표현하는 데 사용되는 Google에서 개발한 신경망 모델입니다.
Python에서는 gensim 라이브러리를 사용하여 Word2Vec 모델을 쉽게 구현할 수 있습니다. 다음은 gensim 라이브러리를 사용하여 영어 텍스트에 대한 Word2Vec 모델을 구현할 수 있는 Python 코드 예제입니다.
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"])
위 코드에서 nltk 라이브러리는 먼저 텍스트를 분할하는 데 사용된 다음 Word2Vec 클래스를 사용하여 Word2Vec 모델을 구축합니다. 여기서 size 매개변수는 단어의 벡터 차원인 min_count 매개변수는 최소 단어 빈도(이 경우 1)를 지정하여 모든 단어가 모델에 고려되도록 합니다. 다음으로, build_vocab() 메서드를 사용하여 어휘를 구축하고 train() 메서드를 사용하여 모델을 훈련합니다. 마지막으로, model["hello"], model["world"], model["python"]과 같이 대괄호를 사용하여 각 단어의 특징 벡터에 액세스할 수 있습니다.
요약
이 글에서는 Bag-of-Words 모델, TF-IDF 모델, Word2Vec 모델 등 Python에서 텍스트 특징 추출 기술을 사용하는 방법을 소개합니다. 이러한 기술을 사용할 때 텍스트 데이터의 노이즈를 극복하려면 간단한 텍스트 전처리가 필요합니다. 또한 다양한 텍스트 특징 추출 기술은 다양한 애플리케이션 시나리오에 적합하며 특정 문제에 따라 적절한 기술을 선택해야 한다는 점에 유의해야 합니다.
위 내용은 Python에서 텍스트 특징 추출 기술을 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!