ストップワードはいくつかのカテゴリに分類されます。
-モーダル動詞;
-定義と副詞を強化し、一般化しました。
-決まり文句と事務職;
-hyperonyms;
-時間の寄生虫;
-動詞の名詞;
-受動態
-副詞;
-分詞。
プロトタイプは、すべての形式で「できる」、「必要」、「必要」のリストを使用して、モーダル動詞を選び出しました。
'modal': { 'can': u""", , , , , , , , , , , , , , , """, 'need': u', , , , ', 'should': u', , , ', 'other': u', , , , ' },
テキストは正規表現(?:[\ S、。:] | \ A | \ Z)によって単語に分割され、各単語はストップワードと比較されました。 一致はソーステキスト<span class = "stop word class">でマークされ、マークアップされたテキストが返され、ページ上のテキストが置き換えられました。
プロトタイプは機能し、ストップワードのリストは増加しましたが、決まり文句にたどり着くと、すべての形式でストップワードをリストし続けることができないことに気付きました。 各ストップワードは63になりました。3つの属×3回×7つのケース。 私はピステマーを差し込んだ 。
ステマーは単語の末尾と接尾辞を削除し、通常の形式にします。
PystemmerはSnowballアルゴリズムで実行されます。→ → → → →
アルゴリズムはストップワードで実行され、テキストに従って、末尾と接尾辞を破棄しました。 ストップワードとテキスト内の単語の初期形式を比較しました。 「疑わしい喜び」などのストップフレーズは、アルゴリズムが単語に解析し、スタンプを押して収集します。 テキスト単語のリストでストップフレーズを検索すると、チェック対象の単語とその後ろにあるいくつかの単語が取得されます。
残念なことに、ストップワードの辞書を介して副詞、受動的な音声、および特定のパスワードをチェックすることはできません。 ロシア語のすべての方言のリストを想像してみてください? モルフォロジーアナライザーをプラグインします。 pythonには、 kmikeのpymorphy2以外の選択肢はありません。
形態素解析ツールは、単語の品詞(名詞、動詞、形容詞、...)、性別、単数/複数、格、人、時間、動詞の声を決定します。 sourceの完全なリスト。 pymoprhy2の仕組みに関するエキサイティングな記事 。
[Parse(word=u'', tag=OpencorporaTag('PRTS,perf,past,pssv masc,sing'), normal_form=u'', score=1.0, methods_stack=((<DictionaryAnalyzer>, u'', 745, 71),))] [Parse(word=u'', tag=OpencorporaTag('ADJF plur,nomn'), normal_form=u'', score=0.212962962962963, methods_stack=((<DictionaryAnalyzer>, u'', 162, 20), (<UnknownPrefixAnalyzer>, u''))), Parse(word=u'', tag=OpencorporaTag('ADJF inan,plur,accs'), normal_form=u'', score=0.212962962962963, methods_stack=((<DictionaryAnalyzer>, u'', 162, 24), (<UnknownPrefixAnalyzer>, u''))), Parse(word=u'', tag=OpencorporaTag('PRTF,impf,tran,pres,actv plur,nomn'), normal_form=u'', score=0.212962962962963, methods_stack=((<DictionaryAnalyzer>, u'', 1609, 33), (<UnknownPrefixAnalyzer>, u''))), Parse(word=u'', tag=OpencorporaTag('PRTF,impf,tran,pres,actv inan,plur,accs'), normal_form=u'', score=0.212962962962963, methods_stack=((<DictionaryAnalyzer>, u'', 1609, 37), (<UnknownPrefixAnalyzer>, u''))), Parse(word=u'', tag=OpencorporaTag('PRTF,impf,intr,pres,actv plur,nomn'), normal_form=u'', score=0.03703703703703704, methods_stack=((<FakeDictionary>, u'', 1670, 33), (<KnownSuffixAnalyzer>, u''))), Parse(word=u'', tag=OpencorporaTag('PRTF,impf,intr,pres,actv inan,plur,accs'), normal_form=u'', score=0.03703703703703704, methods_stack=((<FakeDictionary>, u'', 1670, 37), (<KnownSuffixAnalyzer>, u''))), Parse(word=u'', tag=OpencorporaTag('PRTF,impf,tran,pres,actv plur,nomn'), normal_form=u'', score=0.03703703703703704, methods_stack=((<FakeDictionary>, u'', 2631, 33), (<KnownSuffixAnalyzer>, u''))), Parse(word=u'', tag=OpencorporaTag('PRTF,impf,tran,pres,actv inan,plur,accs'), normal_form=u'', score=0.03703703703703704, methods_stack=((<FakeDictionary>, u'', 2631, 37), (<KnownSuffixAnalyzer>, u'')))]
形態素解析器テストを接続した後、テキストは副詞、受動態、秘跡、間投詞を識別します。
クライアントの問題に対処するために残っています。 単純なテキスト入力フィールドでは、多くの問題が発生する可能性があるとは思いませんでした。 Enterキーを押して、挿入時のテキストと挿入コード<br>をクリアするjava-scriptを作成する必要がありました。 新しいバージョンでは、コードをWysihtml5に置き換えました 。 Wysihtml5は軽量のHTMLエディターです。 私はそれを見つけ、Basecampでエディターがどのように作られたかを研究しました。
さらに、テキストのマークアップをクライアントに転送する必要がありました。 テキストの確認はすぐに行われず、ユーザーは答える前にさらに数文を入力できます。 テキストはサーバー上でマークされているため、ユーザーの変更はすべて消去されました。
代わりに、サーバーはクラス、開始位置、終了位置を含むストップワードのリストを返し始めました。 そして、マークアップはすでにクライアントで発生しています。 その位置の単語がサーバーからの応答と一致しない場合、その単語はマークされません。 ユーザーがテキストを変更し、単語の位置が変わった場合。
開発計画:
-17語以上の文章を強調表示するため、読みにくい。
-8行より長い段落を強調表示します。 ほとんどの場合、このような段落を壊す必要があります。
-テキストの「 リズム 」を追跡します。 良いテキストでは、長い文と中程度の文と短い文が交互になり、テキストは単調ではなくなります。 読者は眠りません。
-隣接する文の繰り返し単語。
-仮定法ムード。
-パブリックAPI。
Habraブログと役に立つ手紙を購読してください。 私たちは情報スタイルについて書き、他の人の投稿を分析します。