スマート語彙による言語モデルのパフォーマンスの向上
このプロジェクトは、「よりスマートな」語彙を作成するために、品詞ラベルと固有表現を使用して 10 億単語コーパスの前処理の使用を検討するように設計されています。これらの手法を使用すると、コーパス内の上位 N 語のみを使用するよりも優れた混乱スコアを取得できます。
処理の完全な説明と、取得可能な複雑さスコアへの影響については、「よりスマートな語彙による言語モデルのパフォーマンスの向上」を参照してください。
プロジェクトには次のスクリプトが含まれています
このプロジェクトはその場で使用するように設計されており、pip のインストールはありません。 GitHub からソースをダウンロードし、構成オプションを設定し、番号付きのスクリプトを順番に実行するだけです。このコードは研究者向けに設計されているため、特定の結果を得るには、実行中のスクリプト内のコードを確認し、必要に応じてオプションを変更する必要があることに注意してください。
メイン ディレクトリのスクリプトには、実行順序を示す番号が接頭辞として付いています。メイン ディレクトリ内のスクリプトのほとんどは、関連するライブラリ関数を呼び出す比較的短い一連のスクリプトです。各スクリプトを実行する前に、必ずスクリプトを開いて、希望する結果が得られるように構成パラメーターを設定してください。
複数のスクリプトで使用されるグローバル構成オプションは、./configs/config.py で設定されます。以下のスクリプトを実行する前に、必ずこのファイルにアクセスしてデータへのパスを変更してください。
00_StanfordCoreNLPServer.py : 構成ファイル ./configs/snlp_server.py を使用して Stanford Core NLP パーサーを開始します。サーバーの実行中、スクリプトはブロックされます。必要に応じて、サーバーを手動で起動することもできます。このスクリプトは利便性のみを目的としています。
10_ExtractUniqueSents.py : 解析する前に、Billion Word Corpus から一意の文を抽出します。ファイルの先頭近くに、生のコーパスをダウンロードしてセットアップする方法に関するいくつかの手順が記載されています。
12_STParseBWCorpus.py : すべての一意の文をスタンフォード パーサーを通じて実行します。この手順にはかなりの時間がかかり (おそらく丸 1 日)、マルチコア プロセッサの恩恵が大きく受けられることに注意してください。実行時間については、ファイル内のメモを参照してください。
14_RemoveDuplicates.py : データを 2 回目のパススルーして、解析/正規化後に発生した重複した文を削除します。
20_CreateEnglishDictionary.py : スマート語彙作成に必要です。
22_CreateVocab.py : このスクリプトはさまざまな種類の語彙を作成します。ファイル内には、ユーザーが作成する語彙タイプを選択するための大きな if/elif ブロックが存在します。
24_IndexVocab.py : 言語モデルのトレーニングに使用されるインデックス付きコーパス データを作成します。ここにも大きな if/elif ブロックがあり、使用する語彙タイプを選択するためにユーザーが設定する必要があります。
30_TrainBasicLM.py : モデルのトレーニングをセットアップして実行します。ここでも、ユーザーがトレーニング対象の語彙を選択できるステートメントのブロックがあります。さらに、ユーザーはモデル設定パラメータを含むファイルを選択する必要があります。モデル設定パラメータは、L1_2048_512.py などのファイル名で config ディレクトリに保存されます。
32_TestPerplexity : トレーニングされたモデルに対してパープレキシティ テストを実行します。スクリプトの下部でテストするモデルを選択します。
34_NextWordPrediction.py : ユーザーが文の最初の部分を入力し、モデルを呼び出して次の単語を予測できるようにします。スクリプトの主要部分でどのモデルを使用するかを構成します。
コードの一部は、ザールランド大学の言語モデル ツールキットから採用されました。 TF-NNLM-TK を参照してください。
そのコードの一部は、TensorflowPTB-LM サンプル モデルに基づいています。