2017-02-17 2 views
0

私は1863年から1894年までの年をカバーするプロシアン新聞コーパスを持ち、時間の経過とともに単語の使用状況をプロットしたいと考えています。コーパスは、およそ2400のxmlファイルで構成され、各問題ごとに1つのファイルがあります。 ConditionalFreqDistをプロットすると、x軸に2400データポイントのグラフが表示され、グラフが判読不能になります。NLTKのConditionalFreqDistでデータポイントをマージする

同じ年の情報をマージして、検索リストの各単語の平均使用率を表示するにはどうすればよいですか?u_input?例:私は1863年の3つのファイルを持っていて、「König」という言葉(他の検索語の中で)を探しています。最初のファイルには1つの言及があり、2番目のファイル3と3番目のファイル2が含まれています。値 '2'を持つデータポイント '1863'を1つだけ持つことができます。

プロット関数:

def _plot_input(): 
    cfd = nltk.ConditionalFreqDist(
     (target, fileid[:-4]) # takes first 4 characters as lable names = year 
     for fileid in reader.fileids() # for all files in directory 
     for w in reader.words(fileid) # for all words in each file 
     for target in u_input 
     if w.lower().startswith(target) # includes words like 'könliglich' if search term was 'König' 
    ) 
    cfd.plot(title='Word usage over time in Prussian Newspapers') 

u_inputは、私は分析していた単語を含むリストである、readerは、例えば、ファイルがこのYYYY-MM-dd.xmlのような名前が付けられ、私のcorpusreaderオブジェクトであります"1867-03-06.xml"

ありがとうございます。

編集: クイックフィックスは、すべてのファイルをループし、同じ年から始まるすべてのファイルを読み取り、1年ごとに1つの新しいファイルに内容を書き込むことです。

答えて

1

ファイル名から年を抽出するには、fileid[:-4]ではなく、fileid[:4]と記述する必要があります。いったんこれを行うと、あなたのコーパスに明確な年があるので、xの位置だけを持つことになります。これはあなたが提案する「クイックフィックス」とまったく同じです。

ただし、yの値は、1年間の合計となりますが、求める1年ごとのファイルごとの平均ではありません。これが本当に必要なものだった場合は、質問を編集して明確にしてください。 (あなたが本当に必要とするのは、1年での総単語数に対する平均です;あなたのファイルがまったく同じサイズでない限り、他のものはナンセンスではありません。)

関連する問題