Как использовать NLTK countvectorizer в словаре в Python? - PullRequest
0 голосов
/ 27 апреля 2019

Я использовал csv reader, чтобы прочитать мой tsv файл, который содержит три столбца: ложь, настроение и обзор.Я создал диктиник для чтения данных моего tsv файла, как показано в коде ниже.Следующий.Я хотел бы использовать NLTK count vectorizer для подсчета частоты слов только в моем столбце "обзора".Я не уверен, как подойти, используя модуль CountVectorizer в NLTK вместе со словарем. Я ожидаю частоту слов каждого слова в колонке обзора в панде dataframe.

В приведенном ниже коде: Infile = Filename.tsv

Любая помощь приветствуется!

Примечание: я новичок в Python, пожалуйста, предоставьте объяснение с кодом.

Мало данных после выполнения кода "print (state)"

{'lie': 'lie', 'sentiment': 'sentiment', 'review': 'review'}
{'lie': 'f', 'sentiment': 'n', 'review': "'Mike\\'s Pizza High Point, NY Service was very slow and the quality was low. You would think they would know at least how to make good pizza, not. Stick to pre-made dishes like stuffed pasta or a salad. You should consider dining else where.'"}
{'lie': 'f', 'sentiment': 'n', 'review': "'i really like this buffet restaurant in Marshall street. they have a lot of selection of american, japanese, and chinese dishes. we also got a free drink and free refill. there are also different kinds of dessert. the staff is very friendly. it is also quite cheap compared with the other restaurant in syracuse area. i will definitely coming back here.'"}

Код пока

mylist=[]
#tsv file reader
with open(infile,'rU') as csvfile:
    reader=csv.reader(csvfile,dialect='excel',delimiter='\t')
    for line in reader:
        if line[0].startswith('Data'):
            continue
        else:
            sentiment={}
            sentiment['lie']=line[0]
            sentiment['sentiment']=line[1]
            sentiment['review']=line[2]
            mylist.append(sentiment)
csvfile.close()

for state in mylist:
    print(state)
    vect = CountVectorizer()

1 Ответ

0 голосов
/ 28 апреля 2019

Ваше предложение else можно упростить до:

            mylist.append(dict(lie=line[0],
                               sentiment=line[1],
                               review=line[2]))

, за исключением того, что вы, вероятно, хотите сначала очистить текст отзыва.Напишите функцию и сохраните preprocess(line[2]) вместо хранения необработанного текста.Вещи, которые вы, возможно, захотите сделать, включают в себя .lower() сокращение и игнорирование знаков препинания, цифр и английских стоп-слов.выглядеть примерно так:

    cv = CountVectorizer(lowercase=True,
                         stop_words='english',
                         ngram_range=(1, 1),
                         tokenizer=token.tokenize)
...