ホームページ バックエンド開発 Python チュートリアル Python の NLTK を使用した単語の置換と修正

Python の NLTK を使用した単語の置換と修正

Aug 02, 2024 am 05:23 AM

Substituição e Correção de Palavras com NLTK em Python

自然言語処理 (NLP) について話すとき、最も重要なタスクの 1 つは単語の置換と修正です。これには、ステミング、見出し語化、スペル修正、同義語や反意語に基づく単語の置換などの技術が含まれます。これらのテクニックを使用すると、検索エンジン、チャットボット、感情分析など、テキスト分析の品質を大幅に向上させることができます。 Python の NLTK ライブラリがこれらのタスクにどのように役立つかを見てみましょう。

ステミング: 接尾辞の切断

ステミングは、単語から接尾辞を削除し、語根だけを残す技術です。たとえば、「running」という単語の語根は「corr」です。これは、検索エンジンがインデックスを作成する必要がある単語の量を減らすのに役立ちます。

NLTK では、PorterStemmer を使用してステミングを行うことができます。それがどのように機能するかを見てみましょう:

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
print(stemmer.stem("correndo"))  # Saída: corr
print(stemmer.stem("correção"))  # Saída: correc
ログイン後にコピー

ここでは、ステミングによって接尾辞が切り取られ、単語の語根だけが残ることがわかりました。これにより、単語のバリエーションを気にすることなく、単語の主な意味に集中し続けることができます。

見出し語化: 基本形式に戻る

見出し語化はステミングに似ていますが、接尾辞を切り取るのではなく、単語をその基本形式、つまり見出し語に変換します。たとえば、「走る」は「走る」になります。これは単語のコンテキストを考慮するため、ステミングよりも少し賢明です。

NLTK で見出し語化を行うには、WordNetLemmatizer を使用します。

from nltk.stem import WordNetLemmatizer

lemmatizer = WordNetLemmatizer()
print(lemmatizer.lemmatize("correndo", pos='v'))  # Saída: correr
print(lemmatizer.lemmatize("correções"))  # Saída: correção
ログイン後にコピー

この例では、見出し関数を使用し、動詞の品詞 (pos) を「v」として指定します。これは、NLTK が単語のコンテキストをより深く理解するのに役立ちます。

置換用の正規表現

テキスト内の特定の単語やパターンを置換したい場合があります。このためには、正規表現 (regex) が非常に役立ちます。たとえば、正規表現を使用して、「no」を「no」に拡張するなど、短縮形を拡張できます。

NLTK を使用してこれを行う方法は次のとおりです:

import re

texto = "Eu não posso ir à festa. Você não vai?"
expansoes = [("não", "não")]

def expandir_contracoes(texto, expansoes):
    for (contraido, expandido) in expansoes:
        texto = re.sub(r'\b' + contraido + r'\b', expandido, texto)
    return texto

print(expandir_contracoes(texto, expansoes))  # Saída: Eu não posso ir à festa. Você não vai?
ログイン後にコピー

この例では、expand_contracoes 関数は正規表現を使用して、テキスト内の短縮語を検索して置換します。

エンチャントによるスペルチェック

もう 1 つの重要なタスクはスペル修正です。テキストにはタイプミスやスペルミスがある場合があり、テキスト分析にはこれらを修正することが不可欠です。 pyenchant ライブラリはこれに最適です。

まず、pyenchant ライブラリをインストールする必要があります。

pip install pyenchant
ログイン後にコピー

その後、Enchant を使用して単語を修正できます。

import enchant

d = enchant.Dict("pt_BR")
palavra = "corrigindo"
if d.check(palavra):
    print(f"{palavra} está correta")
else:
    print(f"{palavra} está incorreta, sugestões: {d.suggest(palavra)}")
ログイン後にコピー

単語が間違っている場合は、Enchant が修正を提案します。

同義語の置換

単語をその同義語に置き換えると、テキストが充実し、繰り返しが避けられ、スタイルが改善されます。 WordNet を使用すると、同義語を簡単に見つけることができます。

その方法は次のとおりです:

from nltk.corpus import wordnet

def substituir_sinonimos(palavra):
    sinonimos = []
    for syn in wordnet.synsets(palavra, lang='por'):
        for lemma in syn.lemmas():
            sinonimos.append(lemma.name())
    return set(sinonimos)

print(substituir_sinonimos("bom"))  # Saída: {'bom', 'legal', 'ótimo', 'excelente'}
ログイン後にコピー

この例では、replace_synonyms 関数は、指定された単語の同義語のリストを返します。

反意語の置き換え

同義語と同様に、反意語も、特に感情分析などのタスクに役立ちます。 WordNet を使用して反意語を見つけることができます:

def substituir_antonimos(palavra):
    antonimos = []
    for syn in wordnet.synsets(palavra, lang='por'):
        for lemma in syn.lemmas():
            if lemma.antonyms():
                antonimos.append(lemma.antonyms()[0].name())
    return set(antonimos)

print(substituir_antonimos("bom"))  # Saída: {'mau', 'ruim'}
ログイン後にコピー

この関数は、指定された単語の反意語を検索します。

実用的なアプリケーション

これらのテクニックの実際の応用例をいくつか見てみましょう。

感情分析

感情分析には、テキストの極性 (肯定的、否定的、または中立的) の判断が含まれます。単語の置換により、この分析が改善されます。

texto = "Eu adorei o filme, mas a comida estava ruim."
palavras = word_tokenize(texto, language='portuguese')
polaridade = 0

for palavra in palavras:
    sinsets = wordnet.synsets(palavra, lang='por')
    if sinsets:
        for syn in sinsets:
            polaridade += syn.pos_score() - syn.neg_score()

print("Polaridade do texto:", polaridade)  # Saída: Polaridade do texto: 0.25 (por exemplo)
ログイン後にコピー
テキストの正規化

テキストの正規化には、テキストを一貫した形式に変換することが含まれます。これには、スペルの修正、ストップワードの削除、同義語の置換が含まれる場合があります。

stopwords = set(stopwords.words('portuguese'))
texto = "A análise de textos é uma área fascinante do PLN."
palavras = word_tokenize(texto, language='portuguese')
palavras_filtradas = [w for w in palavras se não w in stopwords]

texto_normalizado = " ".join(palavras_filtradas)
print(texto_normalizado)  # Saída: "análise textos área fascinante PLN"
ログイン後にコピー
改善されたテキスト検索

検索エンジンでは、同義語を置換すると、検索されたキーワードの同義語を使用するドキュメントが見つかり、検索結果が向上します。

consulta = "bom filme"
consulta_expandidas = []

for palavra em consulta.split():
    sinonimos = substituir_sinonimos(palavra)
    consulta_expandidas.extend(sinonimos)

print("Consulta expandida:", " ".join(consulta_expandidas))  # Saída: "bom legal ótimo excelente filme"
ログイン後にコピー

結論

このテキストでは、Python の NLTK ライブラリを使用したさまざまな単語の置換および修正テクニックを検討します。ステミング、見出語化、正規表現を使用した単語の置換、Enchant によるスペル修正、WordNet による同義語と反意語の置換の方法を確認しました。また、センチメント分析、テキスト正規化、検索エンジンにおけるこれらのテクニックの実際的な応用についても説明します。

これらの手法を使用すると、テキスト分析の品質が大幅に向上し、結果がより正確で関連性の高いものになります。 NLTK は、自然言語処理に取り組む人々向けに強力なツールを幅広く提供しており、これらのツールの使用方法を理解することは、NLP プロジェクトにとって不可欠です。

以上がPython の NLTK を使用した単語の置換と修正の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pythonを使用してテキストファイルのZIPF配布を見つける方法 Pythonを使用してテキストファイルのZIPF配布を見つける方法 Mar 05, 2025 am 09:58 AM

Pythonを使用してテキストファイルのZIPF配布を見つける方法

Pythonでファイルをダウンロードする方法 Pythonでファイルをダウンロードする方法 Mar 01, 2025 am 10:03 AM

Pythonでファイルをダウンロードする方法

Pythonでの画像フィルタリング Pythonでの画像フィルタリング Mar 03, 2025 am 09:44 AM

Pythonでの画像フィルタリング

HTMLを解析するために美しいスープを使用するにはどうすればよいですか? HTMLを解析するために美しいスープを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:54 PM

HTMLを解析するために美しいスープを使用するにはどうすればよいですか?

Pythonを使用してPDFドキュメントの操作方法 Pythonを使用してPDFドキュメントの操作方法 Mar 02, 2025 am 09:54 AM

Pythonを使用してPDFドキュメントの操作方法

DjangoアプリケーションでRedisを使用してキャッシュする方法 DjangoアプリケーションでRedisを使用してキャッシュする方法 Mar 02, 2025 am 10:10 AM

DjangoアプリケーションでRedisを使用してキャッシュする方法

Natural Language Toolkit(NLTK)の紹介 Natural Language Toolkit(NLTK)の紹介 Mar 01, 2025 am 10:05 AM

Natural Language Toolkit(NLTK)の紹介

TensorflowまたはPytorchで深い学習を実行する方法は? TensorflowまたはPytorchで深い学習を実行する方法は? Mar 10, 2025 pm 06:52 PM

TensorflowまたはPytorchで深い学習を実行する方法は?

See all articles