2017-08-14 1 views
0

ここでは、基本的なテキスト解析のためにPythonに完全に移行しようとしています。 私はASTER ngramの出力を、Pythonでnltkや他のモジュールを使って複製しようとしています。 1から4のnグラムでこれを行うことができる必要があります。csvへの出力。PythonとnGrams

DATA:必要に応じ

Unique_ID, Text_Narrative 

OUTPUT:

Unique_id, ngram(token), ngram(frequency) 

出力例:

  • 023345 "I" 1
  • 023345 "愛" 1
  • 023345 "Pythonは"
+0

こんにちは、あなたに試したことのいくつかのコードを含めることはできますか?主な問題は何ですか? –

+0

私たちはコーディングサービスではありません。あなたが何をしたのか、どこにいるのか教えてください。 –

+0

ファイルを書くために 'open'や' csv.writer'が必要な場合は、 'collections'から' Counter'をお勧めします。あなたは、unique_ID文字列内の頻度を、まったく同じにしますか? –

答えて

0

1は、私は、教育的な理由のために、唯一pythonの標準ライブラリで、この簡易版を書きました。他の人が質問が本当にあいまいですが、あなたが新しく追加されたので、ここで長い形式のガイドです言ったように

量産コードはspacypandas

import collections 
from operator import itemgetter as at 
with open("input.csv",'r') as f: 
    data = [l.split(',', 2) for l in f.readlines()] 
spaced = lambda t: (t[0][0],' '.join(map(at(1), t))) if t[0][0]==t[1][0] else [] 
unigrams = [(i,w) for i, d in data for w in d.split()] 
bigrams = filter(any, map(spaced, zip(unigrams, unigrams[1:]))) 
trigrams = filter(any, map(spaced, zip(unigrams, unigrams[1:], unigrams[2:]))) 
with open("output.csv", 'w') as f: 
    for ngram in [unigrams, bigrams, trigrams]: 
     counts = collections.Counter(ngram) 
     for t,count in counts.items(): 
      f.write("{i},{w},{c}\n".format(c=count, i=t[0], w=t[1])) 
+0

ありがとうUri-このコードは私のところに半分持ってきました。 2単語、3単語などのngramを実行する調整を共有できますか? –

+0

私はbigramsとtrigramsの計算を追加しました、それが役に立ったら答えを受け入れてください。追加のリクエストがある場合は、新しい質問をしてください –

0

を使用する必要があります。 :-)

from collections import Counter 

#Your starting input - a phrase with an ID 
#I added some extra words to show count 
dict1 = {'023345': 'I love Python love Python Python'} 


#Split the dict vlue into a list for counting 
dict1['023345'] = dict1['023345'].split() 

#Use counter to count 
countlist = Counter(dict1['023345']) 

#count list is now "Counter({'I': 1, 'Python': 1, 'love': 1})" 

#If you want to output it like you requested, interate over the dict 
for key, value in dict1.iteritems(): 
    id1 = key 
    for key, value in countlist.iteritems(): 
     print id1, key, value