自然言語処理におけるテキストベクトル抽出の実用例

1. テキスト分類

テキスト分類では、機械学習モデルを用いてテキストをカテゴリに割り当てます。特徴ベクトル変換後、各種分類アルゴリズムを適用します。

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import SGDClassifier

text_samples = ["素晴らしい製品", "最悪のサービス", "満足のいく結果", "期待外れの体験"]
class_labels = [1, 0, 1, 0]  # 1: 肯定, 0: 否定

vector_encoder = CountVectorizer()
feature_matrix = vector_encoder.fit_transform(text_samples)

classifier = SGDClassifier()
classifier.fit(feature_matrix, class_labels)

test_phrase = ["不満足な結果"]
test_vector = vector_encoder.transform(test_phrase)
result = classifier.predict(test_vector)
print(result)  # [0]

2. 情報検索

クエリとドキュメント間の類似度計算にベクトル表現を利用し、関連性の高い文書を検索します。

from sklearn.neighbors import NearestNeighbors

corpus = ["猫がマットの上に座る", "犬が郵便配達員に吠える", "鳥が歌を歌う"]
corpus_vectors = vector_encoder.fit_transform(corpus)

search_query = ["マット上の猫"]
query_vector = vector_encoder.transform(search_query)

neighbor_finder = NearestNeighbors(n_neighbors=1)
neighbor_finder.fit(corpus_vectors)
distances, indices = neighbor_finder.kneighbors(query_vector)
print(indices)  # 類似文書インデックス

3. 意味的類似性

ベクトル空間における距離測定により、テキスト間の意味的類似性を評価します。

def compute_similarity(text_a, text_b):
    vec_a = vector_encoder.transform([text_a])
    vec_b = vector_encoder.transform([text_b])
    return cosine_similarity(vec_a, vec_b)[0][0]

phrase1 = "サッカーを楽しむ"
phrase2 = "フットボールが好き"
similarity_score = compute_similarity(phrase1, phrase2)
print(similarity_score)  # 類似度スコア

4. テキストクラスタリング

類似テキストをグループ化するため、教師なし学習アルゴリズムを適用します。

from sklearn.cluster import DBSCAN

text_collection = ["優れた映画作品", "ひどい映画体験", "素晴らしい気分", "悪い経験"]
feature_set = vector_encoder.fit_transform(text_collection)

cluster_model = DBSCAN(eps=0.5)
cluster_labels = cluster_model.fit_predict(feature_set.toarray())
print(cluster_labels)  # クラスタラベル

5. 機械翻訳

多言語間の意味表現変換にテキストベクトルを活用します。

from transformers import pipeline

translator = pipeline("translation_en_to_fr")
translated = translator("I enjoy coding", max_length=40)
print(translated[0]['translation_text'])  # J'aime programmer

6. 生成タスク

ベクトル表現を基にした生成モデルで、新規テキストを生成します。

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("distilgpt2")
generation_model = AutoModelForCausalLM.from_pretrained("distilgpt2")

def text_generation(seed_text):
    inputs = tokenizer(seed_text, return_tensors="pt")
    outputs = generation_model.generate(**inputs, max_length=60)
    return tokenizer.decode(outputs[0])

generated = text_generation("昔々")
print(generated)

タグ: テキストベクトル化 自然言語処理 機械学習 コサイン類似度 トランスフォーマーモデル

7月30日 20:56 投稿