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 など、バッグオブワード モデルの構築に使用できるオープン ソース ライブラリが多数あります。以下は Python コードの例です。sklearn を使用して英語テキストのバッグ オブ ワード モデルを実装できます:
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() メソッドを使用してバッグオブワード モデルの特徴を取得し、transform() メソッドを使用してテキストを特徴ベクトルに変換し、toarray() メソッドを使用してスパース行列を表現します。一般的な NumPy 配列。
3. TF-IDF モデル
バッグオブワード モデルはテキスト内の単語の頻度をうまく表現できますが、テキスト内の単語ごとに異なる重要性が考慮されていません。分類。たとえば、テキスト分類問題では、一部の単語がテキストの複数のカテゴリに出現することがありますが、それらは異なるカテゴリを区別する上で大きな役割を果たしません。逆に、一部の単語はテキストの特定のカテゴリにのみ出現する可能性があり、異なるカテゴリを区別するために重要です。
この問題を解決するために、より高度なテキスト特徴抽出テクノロジとして TF-IDF モデルを使用します。 TF-IDF (Term Frequency-Inverse Document Frequency) は、文書内の単語の重要性を評価するために使用される統計手法です。文書内の単語の頻度と、文書のコレクション全体における単語の出現頻度の逆数を乗算して、単語の TF-IDF 値を計算します。
Python には、sklearn や nltk など、TF-IDF モデルの構築に使用できるオープン ソース ライブラリも多数あります。以下は Python コードの例です。sklearn を使用して英語テキストの TF-IDF モデルを実装できます:
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 モデルの特徴を取得し、transform() メソッドを使用してテキストを特徴ベクトルに変換し、toarray() メソッドを使用してスパース行列を一般的な NumPy として表します。配列。
4. Word2Vec モデル
bag-of-words モデルと TF-IDF モデルに加えて、Word2Vec モデルと呼ばれる高度なテキスト特徴抽出テクノロジもあります。 Word2Vec は、Google によって開発されたニューラル ネットワーク モデルで、類似した単語がベクトル空間で近くなるように単語を密なベクトルとして表現するために使用されます。
Python では、gensim ライブラリを使用して Word2Vec モデルを簡単に実装できます。以下は Python コードの例です。gensim ライブラリを使用して、英語テキストの Word2Vec モデルを実装できます:
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"] などの角括弧を使用して、各単語の特徴ベクトルにアクセスできます。
概要
この記事では、バッグ オブ ワード モデル、TF-IDF モデル、Word2Vec モデルなど、Python でテキスト特徴抽出テクノロジを使用する方法を紹介します。これらの手法を使用する場合、テキスト データ内のノイズを克服するために、単純なテキストの前処理が必要です。さらに、さまざまなテキスト特徴抽出テクノロジがさまざまなアプリケーション シナリオに適しており、特定の問題に応じて適切なテクノロジを選択する必要があることに注意してください。
以上がPython でテキスト特徴抽出テクノロジーを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。