2016-09-02 1 views
2

でインドネシア語を語幹私は右ここにいるそのデータの値CSVデータセットを持って enter image description hereSastrawi

だから、私はデータを前処理したいです。データのタイプはテキストなので、テキストマイニングを行います。しかし、私はステミングに混乱しています。私はデータを途切れさせようとしましたが、結果はすべてのニュースの言葉の数です。私は私の友人からコード参照を取得するが、私は変更したい。私は結果を改善するためにそのコードを変更したいと思う。私は結果が単語の各ニュースごとにすべてのニュースを分割しないことを願っています。私はコードを変更するのに役立ちます。

ここでコード:

import os 
 
import pandas as pd 
 
from pandas import DataFrame, read_csv 
 

 
data = r'D:/SKRIPSI/sample_200_data.csv' 
 
df = pd.read_csv(data) 
 

 
print "DF", type (df['content']), "\n", df['content'] 
 
isiberita = df['content'].tolist() 
 
print "DF list isiberita ", isiberita, type(isiberita) 
 
df.head() 
 

 
--------------------------------------------------------- 
 

 
import nltk 
 
import string 
 
import os 
 
import pandas as pd 
 

 
from sklearn.feature_extraction.text import TfidfVectorizer 
 
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory 
 
from nltk.corpus import stopwords 
 
from collections import Counter 
 

 

 
path = 'D:/SKRIPSI/sample_200_data.csv' 
 
token_dict = {} 
 

 
factory = StemmerFactory() 
 
stemmer = factory.create_stemmer() 
 

 
content_stemmed = map(lambda x: stemmer.stem(x), isiberita) 
 
content_no_punc = map(lambda x: x.lower().translate(None, string.punctuation), content_stemmed) 
 
content_final = [] 
 

 

 
for news in content_no_punc: 
 
\t word_token = nltk.word_tokenize(news) # get word token for every news (split news into each separate words) 
 
\t word_token = [word for word in word_token if not word in nltk.corpus.stopwords.words('indonesian') and not word[0].isdigit()] # remove indonesian stop words and number 
 
\t content_final.append(" ".join(word_token)) 
 

 
counter = Counter() # counter initiate 
 
[counter.update(news.split()) for news in content_final] # we split every news to get counter of each words 
 
print(counter.most_common(100))

だから、コードの結果は次のとおりです。

[('indonesia', 202), ('rp', 179), ('jakarta', 160), ('usaha', 149), ('investasi', 136), ('laku', 124), ('ekonomi', 100), ('negara', 86), ('harga', 86), ('industri', 84), ('izin', 84), ('menteri', 83), ('listrik', 79), ('juta', 76), ('pasar', 73), ('tani', 71), ('uang', 71), ('koperasi', 71), ('target', 66), ('perintah', 66), ('saham', 65), ('miliar', 64), ('kerja', 63), ('sektor', 62), ('investor', 61), ('bangun', 60), ('produk', 60), ('pajak', 60), ('capai', 60), ('layan', 58), ('bank', 57), ('produksi', 57), ('modal', 57), ('turun', 57), ('china', 56), ('milik', 55), ('tingkat', 54), ('us', 54), ('triliun', 53), ('tumbuh', 53), ('bkpm', 53), ('impor', 52), ('kembang', 51), ('pt', 49), ('jalan', 49), ('dana', 48), ('bandara', 48), ('negeri', 46), ('rencana', 45), ('nilai', 45), ('temu', 44), ('salah', 42), ('proyek', 41), ('masuk', 41), ('desember', 40), ('langsung', 40), ('hasil', 39), ('butuh', 39), ('rupa', 38), ('biaya', 37), ('kapal', 37), ('rusia', 37), ('franky', 37), ('hadap', 36), ('kredit', 35), ('utama', 35), ('carrefour', 35), ('bijak', 35), ('ikan', 35), ('tanam', 35), ('atur', 34), ('persero', 34), ('kait', 34), ('jam', 34), ('masyarakat', 32), ('gas', 32), ('pakai', 32), ('dagang', 31), ('kondisi', 31), ('transmart', 31), ('lihat', 31), ('bisnis', 31), ('nggak', 31), ('kawasan', 30), ('dorong', 30), ('tutup', 30), ('banding', 30), ('batas', 30), ('terima', 30), ('cepat', 30), ('jasa', 30), ('ton', 29), ('the', 29), ('pln', 29), ('ekspor', 29), ('barel', 29), ('as', 29), ('rumah', 29), ('orang', 28), ('pondok', 28)]

私は誰がCに私を助けることを願って私は結果を得ることができるようにコードをハンギングしますすべてのニュース(コンテンツ)のすべての単語ではなく、すべてのニュース(コンテンツ)の単語の数 "。ありがとうございました。

+0

をインドネシアNLTKコーパスを取得する方法言語? – yfsx

答えて

1

これを正しく理解すると、問題は直接PySastrawiに関連していません。

ニュースデータの処理中にcounter.update()を使用するという問題があります。これにより、最終的にすべてのニュースの単語の累積数が返されます。 個別のニュースの単語を数えたい場合は、ニュースごとに別々のインスタンスCounterが必要です。

for news in content_final: 
    counter = Counter(news.split()) # counter initiate 
    print(counter.most_common(100)) 

完全なデモ例:(これは各ニュースから100個の最も一般的な単語を表示します)は、次のようなもの

>>> content_final = ['foo','foo foo bar','foo baz baz'] 
>>> for news in content_final: 
...  counter = Counter(news.split()) 
...  print(counter.most_common(1)) 
... 
[('foo', 1)] 
[('foo', 2)] 
[('baz', 2)] 

ライブ、それを参照してください:https://eval.in/664688