基本的なプログラミングのPython:Pythonは、自然言語処理、ワード形態のステミングと最大マッチングアルゴリズムコードを説明します

本論文では、語幹と見出し語処理と最大マッチングアルゴリズムとコードサンプルが導入され、Python実装に焦点を当て、のは、特定のコンテンツを見てみましょう。

自然言語処理は非常に重要な操作が生じると見出し語処理、両方の非常に類似したとして知られています。彼らは効果的に単語のフォームをマージの目的を達成することができる、2つの両方の接続が異なっている、方法を標準化し、二つの重要なワード形式です。

1、ステミング(ステミング)

定义:Stemmingistheprocessforreducinginflected(orsometimesderived)wordstotheirstem、baseorrootform-generallyawrittenwordform。

ステミングは、幹、または単語のルートフォーム(必ずしも完全なセマンティクスを発現しない)を抽出することで、説明します。

NLTKは、3つの最も一般的ステミングインターフェース、すなわちPorterstemmer、LancasterStemmerとSnowballStemmerを提供します。

抽出PorterStemmerポーターアルゴリズム、ルック例を語幹

>>> from nltk.stem.porter import PorterStemmer 
>>> porter_stemmer = PorterStemmer() 
>>> porter_stemmer.stem(‘maximum') 
u'maximum'
>>> porter_stemmer.stem(‘presumably') 
u'presum'
>>> porter_stemmer.stem(‘multiply') 
u'multipli'
>>> porter_stemmer.stem(‘provision') 
u'provis'
>>> porter_stemmer.stem(‘owed') 
u'owe'

ステマランカスター幹抽出アルゴリズム、ルック例

>>> from nltk.stem.lancaster import LancasterStemmer 
>>> lancaster_stemmer = LancasterStemmer() 
>>> lancaster_stemmer.stem(‘maximum') 
‘maxim' 
>>> lancaster_stemmer.stem(‘presumably') 
‘presum' 
>>> lancaster_stemmer.stem(‘presumably') 
‘presum' 
>>> lancaster_stemmer.stem(‘multiply') 
‘multiply' 
>>> lancaster_stemmer.stem(‘provision') 
u'provid'
>>> lancaster_stemmer.stem(‘owed') 
‘ow'

ステマスノーボールスノーボール幹抽出アルゴリズム、ルック例

>>> from nltk.stem import SnowballStemmer 
>>> snowball_stemmer = SnowballStemmer(“english”) 
>>> snowball_stemmer.stem(‘maximum') 
u'maximum'
>>> snowball_stemmer.stem(‘presumably') 
u'presum'
>>> snowball_stemmer.stem(‘multiply') 
u'multipli'
>>> snowball_stemmer.stem(‘provision') 
u'provis'
>>> snowball_stemmer.stem(‘owed') 
u'owe'

2、見出し語処理(見出し語処理)

定義:Lemmatisation(orlemmatization)inlinguistics、istheprocessofgroupingtogetherthedifferentinflectedformsofawordsotheycanbeanalysedasasingleitem。

目に見える、Lemmatisationは(完全セマンティクスを表現するために)、単語の一般的な形の減少に言語の任意の形式です。これとは対照的に、シンプルで軽量語形が道をマージ語幹、最終的な結果は、ステムを得ている、必ずしも実用的な意義を持っていません。見出し語処理プロセスは比較的複雑で、ステミング、より多くの研究及び応用に比べて、特定の感覚を運ぶことができる単語のプロトタイプについて得られた結果。

私たちは、後でMaxMatchアルゴリズムと組み合わせた、より複雑な例を与えます。

ここでは語幹と見出し語処理との違いに導入:

見出し語処理(見出し語処理)は、一般的な言語の単語の形の任意の形式の減少を(完全なセマンティクスを発現することができる)であり、ステミング

(ステミング)はワード(完全なセマンティクスを発現必ずしも可能ではない)の幹の除去、又はルート形式です。見出し語処理と単語語幹フォームが標準化されているカテゴリ

重要な方法、効果的に単語のフォームをマージの目的を達成することができる、2つの接続の両方の間に違いがあります

現在一般的と次の4つの領域にまとめてお問い合わせ:

(1)目的の団結を。ステミングと見出し語処理対象が簡略化されるか、または幹(STEM)語形変化形態または単語の誘導形態にマージされます

または基本的な形をプロトタイプ、マージされた単語の異なる形式の統一の過程です。

(2)断面結果。いくつかの交差の結果として、相互に排他的ではない関係に起因し、見出し語処理。単語の一部は、同じワード形式のトランジション効果を達成するために、これらの2つのメソッドを使用します。このような「犬」という言葉のように

また、「犬」の原型である「犬」、などのドライ。

同様の(3)主流実装。現在主流の実装を派生し、見出し語処理実現は、言語や既存の辞書マッピングエキスステムの使用のルールを使用して、またはワードのプロトタイプを取得しています。

(4)同様のアプリケーション。主に情報検索およびテキスト、自然言語処理に用い、両方のアプリケーションは、基本的な手順であります

違いは、以下の5つのエリアに要約されます。

そのような「猫」、「効果」のための「有効な」治療として扱わ「猫」として、幹ワードを変換する「減少」法を用いて主に生じる基本的に(1)、。見出し語処理は、主に「遷移」

方法であって、その元の形状に単語は、意志として「ドライブ」として扱わ「駆動」、「ドライブ」として扱わ「運転」。

複雑さの(2)は、メソッドをステミングする変換を固定するだけでなく、形態解析の必要性、ワード形態の原理はまた、単語のプロトタイプを返す必要があり、比較的簡単であるだけでなく、音声認識のため、同じワードフォームを区別します

異なるプロトタイプの言葉の違い。POS見出し語処理の精度に直接影響の精度をタグ付けするので、見出し語処理はより複雑。

ステミング主流と見出し語処理は、同様の方法を実施するが、特定の実装に焦点を当てているが、実装上の(3)。主にルールを用いて行っ生じる実装は、単語の簡素化効果を達成するための接辞除去や削減を変更します。Wordのフォーム原理はまた、比較的複雑で、複雑な形態学的変化は、単にうまくルールに従って行われていません。辞書、語形変化やマッピングのプロトタイプへの依存されており、有効な単語辞書を生成します。

また、見出し語処理を生じる結果といくつかの相違点について(4)。ステミングの結果は、「復活」は結果を生じることは、結果を生じることは「airlin」で、「reviv」である「ailiner」などの言葉の意味が、単語の一部のみ、と、完全ではないかもしれません。プロセスによって得られた見出し語処理後の結果は、単語辞書に一般に有効である、ある意味、完全な単語です。

(5)アプリケーションの分野で、私たちは同じフォーカスを持っています。これらの両方は、情報検索、テキスト処理、異なる強調に使用されているが。粗い粒度の検索を拡大し、同様にステミングは、複数のそのようなSolrの、Luceneのように、情報検索の分野に適用されます。よりきめ細かい、より正確なテキスト解析および発現のためのテキストマイニング、自然言語処理で使用される見出し語処理がより重要

これとは対照的に、シンプルで軽量語形が道をマージ語幹、最終的な結果は、ステムを得ている、必ずしも実用的な意義を持っていません。見出し語処理プロセスは比較的複雑であり、結果は、ステミング、より多くの研究及び応用に比べて、特定の感覚を運ぶことができる単語のプロトタイプについて得られ

3、最大マッチングアルゴリズム(MaxMatch)

中国の自然言語処理アルゴリズムでMaxMatchは、多くの場合、単語の使用(おそらく名前からすでに貪欲な戦略は、アルゴリズムに基づいた設計であることを考えることができます)。一般的に、非常に簡単ですが、中国はこのトラバーサルを持っていないスペース、によって分割する語彙内の各英単語の間。例えば、「私は中国の人民共和国を愛する」、この文はとても{「私」、「愛」、「中国」、「人」、「共和国」}、{や「I」である、かもしれセグメンテーションの結果であり、明らかに「愛」、「中国人民共和国」}、我々は後者の分割結果を好みます。「中国の人民共和国は」固有名詞は明らかであるので(ビューのように単語分割ポイントを置くが賢明明確ではありません)。私たちは、後者の戦略は、いわゆるMaxMatch、すなわち最大一致で選びました。「中国人民共和国は、」明らかに優れ単語「中国」、「人が」、 '共和国よりもあるため、これらの言葉は長いです。

私たちは、MaxMatchアルゴリズム英語(実際に、それは中国の処理は同じである)の例で示すことができます。アルゴリズムは徐々に一致の可能な最大長さを得るために、文字列、文字列の右の長さから減少しました。アカウントに我々が得てきた語彙を取ることはとてもLemmatisationを使用して、単語の種類のいくつかのバリエーションが含まれ、その後、シソーラスでの一致を探すことができます。

from nltk.stem import WordNetLemmatizer 
from nltk.corpus import words 
  
wordlist = set(words.words()) 
wordnet_lemmatizer = WordNetLemmatizer() 
  
def max_match(text): 
  pos2 = len(text) 
  result = '' 
  while len(text) > 0:     
    word = wordnet_lemmatizer.lemmatize(text[0:pos2]) 
    if word in wordlist: 
      result = result + text[0:pos2] + ' '
      text = text[pos2:] 
      pos2 = len(text) 
    else: 
      pos2 = pos2-1        
  return result[0:-1]

アルゴリズムの実装の効果を調べるために、

>>> string = 'theyarebirds'
>>> print(max_match(string)) 
they are birds

もちろん、上記のコードはまだ文字列のアルファベット以外の文字(例えばデジタル句読点など)、それはいくつかの問題かもしれあった場合には、不足、です。関心のある読者は、この実現の自分自身の洗練と改良版を試してみてください。

最後に、私は[良い評判パイソンの収集をお勧めします入力する]をクリック ]、スキルを習得古いタイマーがたくさんある、経験、面接スキル、職場体験や他のシェアを学んで、より多くの我々は慎重に、実際のプロジェクトデータ上のゼロベースの入門情報を準備しましたこの方法は、毎日のPythonプログラマは、いくつかの小さな細部に注意してお支払いする必要が共有するために学習、技術のタイミングを説明する
概要を

この記事のすべてだという自然言語処理でPythonを茎、形態およびMaxMatchは、アルゴリズムのコードを説明

公開された20元の記事 ウォンの賞賛4 ビュー20000 +

おすすめ

転載: blog.csdn.net/haoxun11/article/details/104930868