AIFラむブラリヌの䟋を䜿甚しお、蚀語的に独立した方法でテキストを文に分割する

前回の蚘事では、新しいNLPラむブラリに぀いお既に説明したした。 しかし、その埌、私たちは「党面的に」話し、具䜓的なこずは䜕も話したせんでした。 今日は、蚀語的に独立したアルゎリズムによっお文をトヌクンに分割する理論的な偎面に぀いおお話したす。 理論蚈算は、AIFラむブラリでの実甚的な実装によっおサポヌトされたす。 行こう...

芏玄

蚘事に基づいお蚘事を䜜成するために䜿甚する甚語を瀺すこずにしたした。



それでは、もっずわかりにくい定矩、぀たり文に移りたしょう。 りィキペディアから定矩を取埗したす。

蚀語の文は、意味的およびむントネヌション的な完党性を持぀、単語たたは単語の文法的に線成された組み合わせである蚀語の単䜍です[1]。 句読点の芳点からは、最埌にピリオド、感嘆笊、疑問笊、たたは省略蚘号が付いた完党な音声単䜍ずしおの文が圢成されたす。


この定矩は、2番目の郚分句読点をわずかに倉曎しお、ほがそのたた䜿甚できたす。

オファヌ -テキストを文章に分割するために䜿甚される技術的なシンボルで区切られたトヌクンの䞀郚。

そのため、どの文字を䜿甚しおテキストを文章に分割するかを、舞台裏でそのたた残したす。

蚀語的に独立した方法でテキストを文章に分割するプロセス

たず、問題の状態を刀断したしょう。



このような条件でテキストを文に分割するタスクは、4぀のサブタスクに分割されたす。
  1. テキスト内の技術的な文字を芋぀けたす。
  2. 芋぀かった技術的特城をグルヌプに分けたす。
  3. 技術蚘号のグルヌプのうち、最初のグルヌプず2番目のグルヌプを決定したす。
  4. 遞択した文字グルヌプを䜿甚しおテキストを文章に分割したす。


これらのタスクはそれぞれ非垞に独立しおおり、他のタスクから分離しお怜蚎するこずができたす。 少し理解したしょう。 各ステップに぀いお、英語版のアルゎリズムの説明が蚘茉されたりィキぞのリンクが提䟛されたす。

1テキスト内の技術的な文字を怜玢する

りィキ

テキストで技術的な文字を芋぀けるにはどうすればよいですか

ほずんどの蚀語のテキストをざっず芋おみるず、これらの文字技術文字が垞にトヌクンの最埌に衚瀺されおいるこずがわかりたす。 この仮説は、すぐに着信メッセヌゞの蚀語に制限を課したす蚀語にはスペヌスを䜿甚する必芁がありたす。 仮説が正しい堎合、技術蚘号をどのように定矩できるかを考えおみたしょう。

頭に浮かぶかもしれない最初のこずは、各シンボルに぀いお、䞎えられたテキスト内のこのシンボルがトヌクンの最埌にある確率を蚈算するこずです。 そしお、最も確率の高いキャラクタヌを遞択したす。

この仮定は、さたざたな蚀語での最初の実隓に぀いお解かれおおり、倚くの蚀語では、トヌクンの最初たたは最埌にうらやたしい芏則性を持った文字が存圚するこずを瀺しおいたす。 このアプロヌチを䜿甚するこずは非垞に単玔です䞍可胜です。

その結果、シンボルが技術的な確率匏は次のようになりたす。

1P1ch*P2ch^ 2

ここで

P1chは、このテキストの文字chがトヌクンの最埌にある確率です。
P2ch-これは、このテキストのch文字の前の文字がトヌクンの最埌にも珟れる確率です。

P2の確率を蚈算する䟋を芋おみたしょう。 これらのキャラクタヌがあるずしたしょう

。 ダブ

そしお、それらがトヌクンの最埌にある確率
P1。= 0.8
P1y= 0.9
P1a= 0.01
P1b= 0.02

トヌクンの最埌にあるドット蚘号は4回出䌚っおおり、次の蚘号がドットの前に立っおいたした。
y-3回
a-1回

この堎合、P2 '。'は次のように蚈算されたす。
3/4 * P1y+ 1/4 * P1a= 0.75 * 0.9 + 0.25 * 0.01 = 0.6775

これはすでに興味深いものです。 そしお、それはうたくいくようです。 ただし、AIFコヌドを詳しく調べるず、この匏を䜿甚しお確率を蚈算するよりも分析が少し耇雑であるこずがわかりたす。

実際のずころ、この匏でも100の結果は埗られたせん。 単語がしばしば同じ2文字で終わる蚀語がありたす。 さお、たずえば、末尟の「ec」が実質的に普及しおいるテキスト。 同時に、e蚘号自䜓がトヌクンの最埌に衚瀺されるこずがよくありたす。 その結果、シンボル「c」は技術的なものずしお匷調衚瀺されたす。これは、倚くの堎合トヌクンの末尟に衚瀺され、その前にはトヌクンの末尟にも衚瀺されるシンボルがあるためです。

ただし、凊理も非垞に簡単です。最初の匏で取埗した技術蚘号を陀倖する必芁がありたす。 2぀の単玔な基準でフィルタリングできたす。 たず、シンボルが垞にトヌクンの最埌にあるずいう可胜性。 はい、はい、これは悪い基準であるず蚀いたしたが、ヒュヌリスティックによっお発芋された文字の優れたフィルタヌでもありたす。 第二に、テキストに非垞に少ない文字を削陀する必芁がありたす。 出力でシンボルを取埗したくありたせん。これはテキストで既に䌚ったこずがありたすが、今回はトヌクンの最埌にありたした。 この蚘号はおそらくセパレヌタですが、どのような方法でも芋぀けるこずはできたせん。

その結果、AIFは次のこずを行いたす。

匏1で蚈算された確率が最も高いN文字を遞択し、その䞭から確率P1が最倧のN2文字を遞択したす。 適切なN / N2番号を遞択する方法は別のタスクですが、AIFはこれらの番号を䜕らかの方法で倩井から取っおいるため、ここでは詳しく説明したせん。 この点に関しお、いく぀かの仮説を実際にテストしおいたせん。

Habréの最初の蚘事では、テキスト内の匏による最初のパスのスケゞュヌルが瀺されたした。 その瞬間から匏が倉曎され、より正確にはるかに正確に動䜜するようになりたした。

次に、定性分析に぀いお少し話したしょう。

アプロヌチの定性分析では、次の結果が瀺されたす186冊。
186冊の本でポむントを芋぀けるこずができない12冊の本。
コンマを芋぀けるこずができない2冊の本。
技術的なシンボルずしお文字が匷調衚瀺された3冊の本。

2技術蚘号のグルヌプぞの分割

りィキ

前の段階で、技術蚘号のリストを定矩するこずができたした。 リストは、たずえば次のようになりたす。

。、;”-

次に、このリストをグルヌプに分割する必芁がありたす。 この䟋では、キャラクタヌを次のようにグルヌプに分けるこずができたす。

。」
-;;

グルヌプに分割するタスクは、単玔な仮説によっお解決されたした。各蚀語には、文の先頭でよく䜿甚される蚘号がありたす。 したがっお、技術蚘号ごずに、技術蚘号に続く蚘号ずの関係のグラフを䜜成できたす。

その結果、各セパレヌタ文字に぀いお次の関係グラフが埗られたす。

コミュニケヌションポむント
。
P = 32、S = 16、T = 63、F = 15、W = 44、{= 67、N = 14

コンマ通信
、
p = 47、a = 59、b = 84、c = 52、s = 102、d = 76、t = 295、e = 49、w = 318、m = 59

ラテン文字の関係「y」
y
s = 3、t = 2、w = 6

リンクデヌタは実際のテキストから取埗され、フィルタリングされたす。 実際、分析甚のAIFは最も重芁なリンクのみを残しおいたす。 フィルタリングを行わないず、グラフは少し異なりたす。

もちろん、絶察スケヌルには関心がなく、通信デヌタは確率論に倉換されたす。

各シンボルにこのような接続グラフがあるので、シンボルを2぀のクラスタヌに分割できたす;このためには、2぀のグラフを比范するためのアルゎリズムを定矩するだけです。

AIFでのグラフ比范の実装は、䟋で最もよくわかりたす。 2぀のリンクグラフがあるずしたす。
。
0.2
P 0.6
0.05
n 0.15

、
0.4
n 0.6

そしお今、比范アルゎリズム

Pch1、ch2= ch1.connections.keys.mapToDoubleconnectionKey->ch1.connections.getconnectionKey+ ch2.connections.getconnectionKey/ 2.sum/ ch1.connections.keys .size

そのようなもの。 はい、ここにはいく぀かのニュアンスがありたす。たずえば、Pch1、ch1はPch2、ch1ず等しくない堎合がありたす。 しかし、Alpha2が最終バヌゞョンであるず蚀う人はいたせん;

このアプロヌチは、倧文字ず小文字を䜿甚する蚀語で特にうたく機胜したす倧文字たたは小文字。 少し悪いですが、それでも効果的です。アラビア語などの蚀語で動䜜したす。

このモゞュヌルの品質
ドットずコンマが同じグルヌプに分類される堎合、100冊あたり0.5冊。

もちろん、この時点では、非垞に倚くが舞台裏に残っおいたす。 たずえば、どの確率しきい倀Pch1、ch2の埌、2぀のグラフが等しくなり、1぀のクラスタヌからこれらのグラフを圢成する2぀の文字になるず仮定したすか

さたざたな本のグルヌプのランダムな䟋
ブック1[“; 、] [。]
ブック2[ 。] [; 、]

3テキストを文章に分解する責任がある技術蚘号のグルヌプを決定する

りィキ

そしお、ここではすべおが非垞に簡単です。 トヌクンの配列を新しい配列に衚瀺したす。各配列には、トヌクンが終了する技術蚘号のグルヌプ番号が割り圓おられたす。 トヌクンに技術的なシンボルがない堎合は、れログルヌプに入れたす。 たずえば、次のトヌクンがありたす。

こんにちは お元気ですか 私はすべおが秩序だず思いたす。 いや

そしお最埌の段階で、このようなセパレヌタのグルヌプを特定したした
1-[、]
2-[、]

したがっお、衚瀺埌、次の配列を取埗したす。
1 0 0 1 2 2 0 0 0 1 1

このような配列を䜿甚するず、グルヌプたずえば、最初のグルヌプず次のトヌクンが始たるシンボルずの間に接続を構築できたす。

さお、そしお䟋ここに、最初のグルヌプずシンボルの接続がありたす-実際の本から取ったものです接続は最倧に正芏化されおいたす

{A = 0.36、B = 0.26、 "= 0.39、C = 0.10、D = 0.08、E = 0.1、H = 0.37、I = 0.72、L = 0.08、M = 0.14、N = 0.1、O = 0.15、S = 0.26、T = 1.0、W = 0.26、Y = 0.08}

次に、2番目のグルヌプのリンクを瀺したす。

{A = 0.05、a = 1.0、 "= 0.11、b = 0.24、c = 0.08、d = 0.06、e = 0.05、f = 0.11、h = 0.17、I = 0.09、i = 0.22、m = 0.07、n = 0.06、o = 0.16、p = 0.05、s = 0.21、t = 0.40、w = 0.35}

前回ず同様に、AIFは接続をフィルタリングし、最も重芁なもののみを残したす。 したがっお、フィルタリングする前に、通信はわずかに異なりたす。

そしお、ここにれログルヌプの結合がありたす

{a = 0.61、b = 0.25、c = 0.26、d = 0.18、e = 0.15、f = 0.26、g = 0.12、h = 0.41、I = 0.05、i = 0.35、l = 0.17、m = 0.26、n = 0.13、o = 0.48、p = 0.22、r = 0.14、s = 0.42、t = 1.0、u = 0.07、v = 0.06、w = 0.43、y = 0.06}

このデヌタがあれば、どのグルヌプがれログルヌプのグラフに近いかを蚈算するだけです。 このグルヌプれログルヌプに最も近いを構成する技術蚘号は、文内のトヌクンを区切るために䜿甚される蚘号です。 同時に、れログルヌプのグラフから可胜な限り離れたグラフは、テキストを文に分割する圹割を担う技術蚘号のグルヌプによっお圢成されたす。

この䟋では、最初のグルヌプはトヌクンを文に分割する技術蚘号のグルヌプであり、2番目のグルヌプには文内のトヌクンを分割する蚘号が含たれおいたす。

結果の定性分析は以䞋を瀺したす。
ポむントが間違ったグルヌプに割り圓おられた180冊のうち4冊。
180冊䞭2冊。コンマは間違ったグルヌプに割り圓おられおいた。

4遞択した文字グルヌプを䜿甚しおテキストを文章に分割する

りィキ

たあ。 キャラクタヌのグルヌプがあり、どのグルヌプが䜕に責任があるのか​​を知っおいたす。 しかし、どの堎合に最初のグルヌプの文字がテキストを文に分割するために䜿甚され、どの堎合には䜿甚されないのかをどのように理解できたすか

たずえば、「SSSSR」の末尟のポむントが文の終わりではなく、単に略語の終わりであるこずを理解する方法。 たあ、たたは「千」のような略語、など。

たた、すべおがシンプルです。

最初のグルヌプに属するシンボルを知っおいれば、すべおのトヌクンを調べお、文の平均長を蚈算できたす。 その埌、最初のグルヌプの文字を䜿甚する堎合ごずに、次のこずができたす。
次のトヌクンの最初のシンボルを芋お、この関係が特城的な技術シンボルのグルヌプを蚀いたす。
最初のグルヌプの前のキャラクタヌず次のグルヌプたでの距離を芋おください。

次のトヌクンの蚘号が蚘号の2番目のグルヌプの特性であり、前埌の文のサむズがテキスト内の文の平均サむズ以䞋である堎合、この特定のケヌスでは、最初のグルヌプの蚘号はテキストを文に分割するために䜿甚されたせん。

AIFによっお怜出された堎所を含む本の䟋で、最初のグルヌプのセパレヌタヌが2番目のグルヌプのセパレヌタヌずしおマヌクされおいたす。

゜りル囜際ビ゚ンナヌレでの「最埌の反乱」
「このキラヌ...圌はずおも柔らかくお
゚ルダヌリャザノフ。 「運呜のアむロニヌ」、「オフィスロマンス」
5〜7分 シンプルになるこずもありたす
1分 お湯+ 37–38°、1
5-10秒 -冷氎
五千幎前に行われた

この結果を芋るず、テキスト自䜓以倖の入力情報がなくおも、蚀語に䟝存せずに完党に機胜するこずを理解するのは非垞に面癜いです。 以䞋は英語の別の本の䟋です。

米囜連邊法および
著䜜暩がない限り、米囜

残念ながら、珟圚のステップでは、品質の結果はありたせん=

あずがき

衚瀺されおいるものはすべおAlpha2であり、䜜業の品質ず速床を気にし始めおいたせん。

Alpha3の蚈画によるず、次のリリヌスでは、品質ず速床、およびリファクタリングに泚意を払いたす。 ラむブラリの唯䞀の新しい機胜は、入力蚀語の蟞曞を䜜成するこずです。

アルゎリズム自䜓ずラむブラリAPIは、プロゞェクトwikiで詳しく説明されおいたす github.com/b0noI/AIF2/wiki

ラむブラリのある堎所で、 AIF-CLIずいうシンプルなコン゜ヌルクラむアントも曎新したした。AIF-CLIは、芋぀かった技術的な文字ずこれらの文字のグルヌプを衚瀺できるようになりたした。

私たちのチヌム

Kovalevskyi Viacheslav-アルゎリズム開発者、アヌキテクチャ蚭蚈、チヌムリヌダヌviacheslav@b0noi.com / b0noi 
Ifthikhan Nazeem-アルゎリズム蚭蚈者、アヌキテクチャ蚭蚈、開発者
Sviatoslav Glushchenko-RESTの蚭蚈ず実装、開発者
Oleg Kozlovskyi QA統合および品質テスト、開発者。
Balenko Alekseypodorozhnick@gmail.com-ゞュニア開発者CLIにtoのサポヌトを远加
Evgeniy Dolgikh-QAアシスタンス、ゞュニア開発者

PS興味深いNLPプロゞェクトがある堎合は、お問い合わせください;

プロゞェクトのリンクず詳现

プロゞェクト蚀語Java 8
ラむセンスMITラむセンス
課題トラッカヌgithub.com/b0noI/AIF2/issues
wikigithub.com/b0noI/AIF2/wiki
゜ヌスコヌドgithub.com/b0noI/AIF2
開発者のメヌルリストaif2-dev@yahoogroups.com賌読aif2-dev-subscribe@yahoogroups.com

詊隓条件

すべおのテストは、次の蚀語の186冊の曞籍で実斜されたした。

Source: https://habr.com/ru/post/J242147/


All Articles