導入されたセグメント化アルゴリズムやツールの中で最も完全な履歴

ワード(単語トークン化)は、また、単語分割、文章内の個々の単語を識別するために、すなわち、いくつかの方法として知られており、からテキストように、分離された「コードワードシーケンスは、」アップグレード表される「単語列」図。セグメンテーション技術は、英語、日本語、韓国語のために、ちょうど中国のためではなく、他の言語にも適用されます。

自然な単語の区切り(スペース)が、そのような「ねえ、どのようにしている。」英語は「ちょっと」であり、「あなたが」の背後に必要と句読点ポイントされるなど、多くの場合、単語や句読点粘性以外の場合は、そこにあるが、分離

ディレクトリ

  • なぜ言葉?
  • かかわらず、言葉だろうか?
  • 中国語の単語の難しさ?
  • 古来セグメンテーションアルゴリズム:事前研修への辞書
  • セグメンテーションツールの外側から

なぜ言葉?

言葉ではない場合、中国については、その後、ニューラルネットワークは、直接、元に基づいて行われます漢字列処理と学習のために。しかし、私たちは言葉の意味が異なる言葉で非常に異なる可能性が知っている、そのような「ハハ」と「ハスキー」「ハなどの媒体予測時間に、その後、ハスキー」を「遠トレーニング段階中のモデルから泣くの手段が見えない場合は」それは、文「かすれ」╮(¯▽¯「」)における発現の明るい雰囲気ことが可能である ╭

もちろん、上記の問題を解決するために、単語は単語の後、入力の最小単位は、もはや言葉で、それをではありませんが、「ハハ」と「ハスキー」などの言葉は、二つの異なる単語が何の自然はないであろう、ありますこの問題の前で友人。その次の単語が「言葉の曖昧さ」の問題を緩和します

また、NLPパースペクティブのタスクと機能(特徴)、単語の比較ワードは、より原始的であり、多くの場合、ミッションの目的に関連した低レベルの特徴は、比較的小さい、としばしばが、単語レベルに強い相関ミッションの目的は、発生する可能性があります。各単語の「私は今日のたわごとを行く」という表現は、正の感情的な関係に関連していない例えば、感情の分類タスクのために、あっても「犬」は言葉もしばしば密接に否定的な感情とリンクしているが、「たわごと」言葉は、「幸運」「幸せ」、「驚き」ポジティブ影響し、それゆえ、表明したセグメンテーションは、より高レベルの、より直接的な機能を提供するためのモデルとして見ることができ、このモデルは自然より容易に利用可能投げました良好なパフォーマンス。

かかわらず、言葉だろうか?

答えはもちろん、です。長いモデルとして自身が言葉の曖昧さを学ぶことができるような目的は、単語の前から見ることができ、そして、彼は律法の言葉から学んだ言葉は、それは同等です内部モデルで単語を建て黙示、この時間これは内蔵の単語一緒にネットワークの目標とタスクを解決「エンドエンドのトレーニング」の一部であり、それはより良いパフォーマンスを得ることができます。

しかし、これは非常にまれで、この条件を満たすように、上記の説明から理解できます。これは、トレーニングコーパスは非常に豊富である必要があり、モデルは(セグメンテーションモデルが暗示建ての追加容量があるかもしれません)、私たちはより多くの「単語+単語レベルのモデルである」優れたパフォーマンスよりもすることができ、大きな十分です。BERTや他の大規模な事前研修モデルは、すべてのワードブレーカを使用せずに、多くの場合、単語レベルであるのはこのためです。

さらに、単語に害を行うことができない単語の精度は、それ自体では十分でなく、一度は、騒々しいまたはコーパス(タイプミスより汚い文、様々な非標準言語)で、その単語を簡単に強制されますそれは学ぶことのモデルがより困難にします。たとえば、最終的には「ハスキー」に学んだモデルは言葉ですが、それはハスキーが「あさりレンジャー」に見舞われた結果の単語が認識されない、それは「学士」、「貝」に分割され、これらの三つの言葉を「驚くべき」私たちは「ハスキー」(「ハスキー」は基本単位であるすべてのモデルのトレーニング後に)見ることができない、この「単語レベルのモデルを」訓練してきました。

中国語の単語の難しさ?

1あいまい

まず、前述の言葉は、「言葉のあいまいさ」の問題を緩和することができますが、言葉自体が直面するだろう「セグメンテーションの曖昧さ」の問題を。例えば、分裂タイトル「ラジオ・フランスは、研究を行います」

 

V2-a5d8d3c1924a631d6bae5793b9f27338_b.jpg

「ラジオ/フランス/ DO /研究」へのカットは間違って見えるが、これはタイトルであることを考慮すると、︿(あまりにも南のである。「ラジオ・フランス/国/研究」という言葉で明確に正の解ではありませんが。あなたはあなたを教えていない場合)、これは明らかにセグメント化された2種類のパターンが何の問題も見ていない、タイトルです。

2未知語の問題

また、中国の辞書はまた、そのような「緑の草原」など時代とともに前進している10年前に「疲れを感じることは愛していない」と他のオンライン言葉は、今日の言葉のトレーニングではありませんまた、近い将来に遭遇するかわかりませんワード(すなわち、「未知語」単語は「時代遅れ」であるとセグメンテーションエラーが表示されますので、時間が容易であること、語彙外の単語)、。

3標準化

最後に、言葉はなし規範を確立してきたセグメンテーション境界。1992年に「現代の情報処理語単語中国の基準」の制定、国が、この仕様書にもかかわらず、簡単に主観的な要因の影響を受け、だけでなく、必然的にやや少ない実際の場面で問題が発生しています。

アルゴリズムの記事

1つのベースの辞書

中国語の単語の問題のために、最も単純なアルゴリズムは、辞書に直接基づいて貪欲試合を

例えば、我々は最初の文の先頭から直接単語をルックアップするために開始することができ、辞書の中で最も長い単語は、単語の最初に見つけ、その後、彼の最初の良いの単語分割を得ました。例えば、句「小さな西八尾はNLPを話していた」、辞書には「少し八尾Xiは」最長の言葉で見つかったので、GET

西八尾小は、/ NLPについて話しています

そして、次の単語の先頭から辞書を一致再開し、我々はそう、最長の単語である「中」ことがわかりました

小西八尾/中/ 話すNLP

ように、最終的に取得

小西八尾/中/話す/ NLP

この単純なアルゴリズムである前方最大マッチング(FMM)

アプローチは非常にシンプルですが、名前は少し高いが╮に聞こえますが(╯▽╰)╭

しかし、中国の文自体に起因するが正しいセグメント化率が背面のフロントよりも高くなる傾向に一致するように背面から、情報の重要なセットの特性を有しているので、の逆が存在するであろう「後方最大マッチング(BMM)」。もちろん、FMMまたはBMM両方が、必ずそれゆえ、より思慮深いアプローチを考慮すると、多くのセグメンテーションエラーがありますされている「最大の双方向マッチが」

双方向最大マッチングアルゴリズムは別々に、次いで、セグメンテーションの結果は、さらなる処理のために曖昧な文が一致しないRMMワードたスライスされた文章の治療及びFMMの使用を指します。通常、単語誤り率を低減させるためには、同じ番号かどうかに応じて適切な措置をとるために、言葉の二つの方法の数と比較することができますことは曖昧な文章です。

統計による2

2.1ベースの言語モデル

辞書ベースの方法は単純ですが、明らかにあまりにもそれを見ることができます!しないでください!チー!ことができます!アップ!など、もう少し複雑な文章、「大丈夫、イヴ小さな八尾ホームクッキング。」最大マッチングに、この時点で使用している場合、それは「大丈夫/、/追加/西八尾小/ホーム/ /調理にカットします。 「これは明らかに間違っていることは許されません。

このようなミスが根本的な原因があることである方法は、時間ベースの辞書は、カットの言葉は、最適なソリューションのための全体的な外観から進んでいない状況を考慮していないです実際には、この文は、もつれた方法でセグメンテーションの上記2種類以上の何物でもありません。

。それは問題ではない/、/除算/西八尾小/ホーム/料理/。
B。それは問題では/、/大晦日/小さな八尾/ホーム/ /調理していません。

私たちは、非常に少数の人々に毎日話す交換することができ、「それは問題/、/除算/ XXXX /は/料理しません。」この文を第2文の発生頻度が非常に高くなりますが、そのような「小さな八尾」の内部と言いますその上で「I」、「ファラオ」とします。明らかに文を考えると、セグメンテーションの様々なあなたは、ポートフォリオの合理的な価値の存在を評価することができます一つのことがあれば、それは単語物の最適な組み合わせを見つけることではなく、組み合わせの数が限られています!

だから、このアプローチの本質がある、様々なカットの単語の組み合わせの最も合理的な組み合わせを見つけることとして、このプロセスは見ることができます単語分割図の最大の確率でパスを見つけること

 

V2-cc1049256def5b8d1cbcaa9ea3b78c3f_b.jpg

そして、これはと呼ばれるスコアの単語列に合理的なものがあるかもしれ、「言語モデル」(言語モデル)様々な組み合わせの分割方法を評価するための言語モデルの使用ははるかに魅力、それはスマート╮(╯▽╰)╭与えられた単語の後に得られた文章中の単語系列{W1、W2 ... WM}、ではない言語モデル可能性(又はレトリック配列)を算出することができる文が存在します。

することによって得ることができる。この表現の連鎖ルールが展開されます。

 

v2-8d5813bc2ba423436bb0dda718e309b0_b.png

mはわずかにいくつかの乗算チェーンの背後に大きな値である場合明らかに、計算するのが非常に困難になる(これらの項目の確率の推定値を許容される推定誤差を確実にするために、非常に大規模なコーパスに依存する必要が)。行うにはどのように計算することは困難?もちろん、計算を簡略化する合理的な仮定、我々は、取るために、現在の位置、すなわち、正面に隣接何ワードのみNの位置に依存すると仮定することができ、

 

V2-be3d1226dffab7d59f39c9fbeb2ef2ab_b.png

この簡略化された言語モデルが呼び出されたN-gram言語モデル完了しているチェーン内の各乗算器のような乗算は、それを得るために、手動で標識された化合物の単語分を算出することができます。もちろん、実際の計算でも、ここではそれについて話して起動しない、原因の単語材料の限られたサイズに推定誤差の点を補うために、いくつかの平滑化技術を導入することができます。

統計的機械学習に基づく2.2

NLPは言葉の問題も例外ではありません、機械学習規律と強い結合です。中国語の単語はまた、「としてモデル化することができるシーケンスラベルされた文脈語分類考慮事項です」問題、。したがって、材料は、第一の点語がタグ付けされた配列標識モデルは、このモデルの非標識コーパスワードによって訓練することができます。

サンプルラベル

通常使用される{B:中央:Mは、開始 、E:端部が、S:単一} 四つのカテゴリーは、単語が属するサンプル中の各単語のカテゴリを記述します。彼らは、単語内の単語の位置を表しています。ここで、Bは中間ワードのワードのためにM、単語の最初のワードを表す言葉であり、Eは、単語の末尾の単語の代表であり、Sは、単語に単語を表します。

サンプルを以下に示します。

ライブ/電子B Alが/ bは/ eは、多くの場合、/ sが言っ/ sの生/ / sのA / Sユニット/ sのティーチ/支店B / M・ブック/ Eがあります

その後、我々は直接ワードブレーカの友人を訓練するために統計的機械学習モデルを適用することができます。-統計モデルは、シーケンスの代表であることはタグ付け式モデル表現することである(直鎖)(CRFの)条件付き確率場-隠れマルコフモデル(HMM)の代表、および判別モデルこれらの2つのモデルが小さなパートナーはスキップすることができ非常に精通しています。

隠れマルコフモデル(HMM)

HMMの詳細については、を参照してください。

あなたは、小さな西八尾との恋になら...(上)」/ 「ダウン」

言葉の問題、質問への言葉、その系列ラベリング問題への各々の位置の分類:HMM上での基本的な概念を理解した後、HMM我々は見てモデル化することはどのように言葉にそれ〜基本的な考え方です。前記(B、M、E、Sの前で言及した)4つのカテゴリがあります。完全にすべての分類された位置の後、それの結果に応じて単語クラス列を取得することができます。

栗のために!

私たちの入力は文であります:

        小Q硕士毕业于中国科学院
      

アルゴリズムによって、我々は成功したビットに対応する各単語を単語ラベルを予測しています。

        BEBEBMEBEBME
      

状態シーケンスによると、私たちは言葉を切ることができます。

        BE/BE/BME/BE/BME
      

以下のように単語分割の結果は以下のとおりです。

        小Q/硕士/毕业于/中国/科学院
      

再び質問だから、あなたにHMMワードの完璧なモデルは、その後、どのように文字列の入力シーケンスのマークそれのためにこのモデルを使用する場合は?2つのコアコンセプトを初めて目には、モデルをHMM:観察シーケンス状態のシーケンスを。

観測シーケンスは、私ができることである直接参照対応する語句の上で肉眼による直接観測することはできませんシーケンスを、あるいは「小さなQのマスターは、中国科学院を卒業し、」単語列、およびシーケンスは、内部状態配列であります結果は「BEBEBMEBEBME」と記された、と私たちのHMMモデルは、あなたが私たちを助けることができる観察された配列から- >ゴージャスな状態シーケンスを回しました!

:要約は、以下のように数学的に表現\ラムダ= \ lambda_1 \ lambda_2 ... \ lambda_n文章が入力を表し、n文の長さであり、\ lambda_i単語を表し、O = o_1o_2 ... o_n出力を表すラベルは、出力は理想的です。

 

V2-c7087bbc6d6887f3730ea1bd682287bd_b.png

 

ニューラルネットワークに基づく3が

知られており、深い学習NLPを占有することに成功した、NLPは、配列注釈の分類を席巻し、問題が発生します。前述したように、言葉は、系列ラベリング問題としてモデル化することができる配列データ処理で良いので、(メモリネットワークの長さの場合)LSTMを、最寄りの事前研修モデルスーパー火災も中国語の単語のために使用することができます。

3.1ベース(バイ)LSTM

以前に参照するには、小さなパートナーのモデルに精通していないLSTMは、この小さな夜書いた「ステップ・バイ・LSTMにSTEP」、それを繰り返さないで、この紙LSTMの基本的な理論を。

言語モデルを上記で説明したように、コンテキスト情報は、単語分割の曖昧さを軽減する上で重要である、長いコンテキストは大きなあいまいな自然を解決する能力、考慮すべきn-gram言語モデルのフロントのみ文脈を考慮し一定の距離を行うことができますが、それは何のセグメンテーションモデルは、理論的には、コンテキストの無限の距離と考えることができませんがありますか?答えはされLSTMに基づいて行います。もちろん、LSTMは指向性、両方が各単語位置の分類を許可したときに、だけでなく、すべての情報(すべての右の単語)の将来を検討するために、すべての過去の情報(左のすべての単語を)検討して、我々は、双方向を使用することができますLSTM (バイLSTM)と注釈スケルトンモデル配列として作用します

 

v2-870d31eae4b629a3d9ce92719ed9fa90_b.jpg

完了後LSTMそれによって中国語に示される配列に基づいて、CRFとHMMセグメントで完了し、各位置の分類ソフトマックス層による分類の最後の完了のために各位置をコンテキスト情報を符号化されました。

知識蒸留に基づいて3.2事前トレーニングモデル+

最近、多くの今年の時間よりも、BERT、ERNIE、XLNet事前研修や他の大型も大きな利点を持っている単語の問題に、NLPのフィールドのほとんどを総なめにしました。

 

v2-34a39e7e1d7a13966784668340ff2b5b_b.jpg

しかし、よくあなたが大量のテキスト・ワードを実行したい場合は事前のトレーニングモデルが一つの解決策は、その前のトレーニングモデルですので、カード利用額8 32GテスラV100は、不十分であるように思われます場合でも、コンピューティングリソースの大きすぎる、あまりにも多くの消費であることが知られていますスルー単語知識知識蒸留(知識蒸留)上の(例えばLSTM、GRUのような)小さなモデルに移行します。最近Jiebaワードがある。このようにして得られた、このようなAの使用(実際には、共通の字句解析モデル)のための高度なセグメンテーションモデルの最後の行にして、ジュニアパートナーは自分で見つけるために興味がある可能性が。データモデルと事前研修の知識蒸留多くは、ここでそれを繰り返すことではありません。

 

ツールの記事

(アルファベット順に、あなたのすべてがしようとする)は、次の列より多くの主流のセグメンテーションツールの数、サブスクリプションの数の関連論文は「売り孟八尾Xiの小さな家」舞台裏の返信は[中国]は単語を受けます

1 Jieba

それは言葉のツール最初に考えたことになるが、確かに「スタッター」中国語の単語を知られている場合は、メインアルゴリズムは最短経路に基づいており、以前の単語グラフ統計的セグメンテーション、また、最近建てられた事前研修モデルBaiduの大規模なフライプロペラ+を述べました蒸留セグメンテーションモデルの最前線。

githubのプロジェクト住所:https://github.com/fxsjy/jieba

 

2 THULAC(中国人のための木字句解析)

言語処理研究室は中国の単語分割とPOSタグ付け機能で、中国の字句解析ツールキットの自然や社会と人間開発清華計算によって立ち上げました。採用セグメンテーションツールモデルは、構造化パーセプトロンました。詳細については、アルゴリズムgithubのプロジェクトを参照し、紙原稿をお読みください。

githubのプロジェクト住所:https://github.com/thunlp/THULAC

論文リンク:https://www.mitpressjournals.org/doi/pdf/10.1162/coli.2009.35.4.35403

使用例:

#THULAC
#pip install thulac
import thulac

sentence = "不会讲课的程序员不是一名好的算法工程师"
thu1 = thulac.thulac(seg_only=True)  #只分词
text = thu1.cut(sentence, text=True)  #进行一句话分词
print("THULAC: " + text)

#output
#Model loaded succeed
#THULAC: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程师

 

3 NLPIR-ICTCLAS中国語システム

北京理工大学工学研究センターのデータ検索とマイニング研究所(ビッグデータの検索およびマイニングLab.BDSM@BIT)のリリースを計算する大規模な言語情報処理と雲。HMMサブシソーラス、単語、POS、NERのレベルに基づいていますが、すべての共同訓練のレベルHMM GETの枠組みに組み込まれています。

ホーム:http://ictclas.nlpir.org/github

プロジェクト住所:https://github.com/tsroten/pynlpir

使用例:

#NLPIR-ICTCLAS
#pip install pynlpir
import pynlpir

sentence = "不会讲课的程序员不是一名好的算法工程师"
pynlpir.open()
tokens = [x[0] for x in pynlpir.segment(sentence)]
print("NLPIR-TCTCLAS: " + " ".join(tokens))
pynlpir.close()

#output
#NLPIR-TCTCLAS: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程

 

4 LTP

THULAC、LTPもパーセプトロン(構造化パーセプトロン、SP)の構造に基づいているようにHITは、最大エントロピーのガイドラインを研究するセグメンテーションモデルを生成しました。

プロジェクトホーム:https://www.ltp-cloud.com/github

プロジェクト住所:https://github.com/HIT-SCIR/ltp

論文リンク:http://jcip.cipsc.org.cn/CN/abstract/abstract1579.shtml

使用例:あなたは(使用前にセグメンテーションモデルをダウンロードする必要がありhttp://ltp.ai/download.htmlを

      
 

5 HanLP

オープンソースNLPのアルゴリズムライブラリをサポートする一連の「自然言語処理は、はじめに」でHanLPです。クラシックバージョン1.xの外常時更新反復に加えて、今年も新バージョン2.0を発表しました。バージョン1.xは、辞書にある単語ツールとCRFベースの単語分割モデルを持っています。深学習アルゴリズムをベースとしたオープンソースのセグメンテーションツールのバージョン2.0。

バージョン1.x

githubのプロジェクト住所:https://github.com/hankcs/pyhanlp

バージョン2.0

githubの住所:https://github.com/hankcs/HanLP/tree/doc-zh

使用例:使用する上記の請求項のPython 3.6

#HanLP
#v2.0
#pip install hanlp
import hanlp

sentence = "不会讲课的程序员不是一名好的算法工程师"
tokenizer = hanlp.load('PKU_NAME_MERGED_SIX_MONTHS_CONVSEG')
tokens = tokenizer(sentence)
print("hanlp 2.0: " + " ".join(tokens))
#output
#hanlp 2.0: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程

 

6スタンフォードCoreNLP

スタンフォード大学は、複数の言語をサポートすることができます単語分割ツールを導入しました。コアアルゴリズムは、CRFのモデルに基づいています。

githubのプロジェクト住所:https://github.com/Lynten/stanford-corenlp

論文リンク:https://nlp.stanford.edu/pubs/sighan2005.pdf

使用例:中国語の単語のセグメンテーションモデルをダウンロードするにはスタンフォード大学の公式ウェブサイトを開始する必要があります(https://stanfordnlp.github.io/CoreNLP/

###stanford CoreNLP
#pip install stanfordcorenlp
from stanfordcorenlp import StanfordCoreNLP

sentence = "不会讲课的程序员不是一名好的算法工程师"
with StanfordCoreNLP(r'stanford-chinese-corenlp-2018-10-05-models', lang='zh') as nlp:
    print("stanford: " + " ".join(nlp.word_tokenize(sentence)))

 

公開された33元の記事 ウォンの賞賛0 ビュー3274

おすすめ

転載: blog.csdn.net/xixiaoyaoww/article/details/104589402