編集中のスワヒリ語コーパスで頻度分析を計算しようとしています。現時点では、これは私が持っているものです:
import os
import sys
from collections import Counter
import re
path = 'C:\Python27\corpus\\'
cnt = Counter()
listing = os.listdir(path)
for infile in listing:
print "Currently parsing: " + path + infile
corpus = open(path+infile, "r")
for lines in corpus:
for words in lines.split(' '):
if len(words) >= 2 and re.match("^[A-Za-z]*$", words):
words = words.strip()
cnt[words] += 1
print "Completed parsing: " + path + infile
#output = open(n + ".out", "w")
#print "current file is: " + infile
corpus.close()
#output.close()
for (counter, content) in enumerate(cnt.most_common(1000)):
print str(counter+1) + " " + str(content)
したがって、このプログラムは、指定されたパス内のすべてのファイルを繰り返し処理し、各ファイルのテキストを読み取り、最も頻繁に使用される 1000 の単語を表示します。問題は次のとおりです。スワヒリ語は膠着語です。つまり、時制、因果関係、仮定法、前置詞などを伝えるために、接尾辞、接尾辞、接頭辞が単語に追加されます。
したがって、「する」を意味する「-fanya」のような動詞の語根は、nitakufanya - 「私はあなたをするつもりです.」になる可能性があります。その結果、この頻度リストは、「for」、「in」、「out」など、前述の中置辞を使用しない接続語に偏っています。
「ニタクファニャ」や「ツナファニャ」などの単語を見て、「ファンヤ」という単語を合計に含める簡単な方法はありますか?
いくつかの潜在的な注意事項:
- 動詞の語根は単語の最後になります
- 単語の先頭にある主語マーカーは、次のいずれかです。私たち)、'm' (皆さん)
- 主語マーカーの後には、次のいずれかのテンス マーカーが続きます: 'na' (現在)、'li' (過去)、'ta' (未来)、'ji' (再帰)、'nge' (条件付き)
ありがとう