Я пытаюсь создать функцию, которая получает частоту заданных c слов из кадра данных. Я использую Pandas, чтобы преобразовать файл CSV в фрейм данных и NLTK, чтобы токенизировать текст. Я могу получить счетчик для всего столбца, но у меня возникают трудности с получением частоты для каждого ряда. Ниже то, что я сделал до сих пор.
import nltk
import pandas as pd
from nltk.tokenize import word_tokenize
from collections import defaultdict
words = [
"robot",
"automation",
"collaborative",
"Artificial Intelligence",
"technology",
"Computing",
"autonomous",
"automobile",
"cobots",
"AI",
"Integration",
"robotics",
"machine learning",
"machine",
"vision systems",
"systems",
"computerized",
"programmed",
"neural network",
"tech",
]
def analze(file):
# count = defaultdict(int)
df = pd.read_csv(file)
for text in df["Text"]:
tokenize_text = word_tokenize(text)
for w in tokenize_text:
if w in words:
count[w] += 1
analze("Articles/AppleFilter.csv")
print(count)
Вывод:
defaultdict(<class 'int'>, {'automation': 283, 'robot': 372, 'robotics': 194, 'machine': 220, 'tech': 41, 'systems': 187, 'technology': 246, 'autonomous': 60, 'collaborative': 18, 'automobile': 6, 'AI': 158, 'programmed': 12, 'cobots': 2, 'computerized': 3, 'Computing': 1})
Цель: получить частоту для каждой строки
{'automation': 5, 'robot': 1, 'robotics': 1, ...
{'automobile': 1, 'systems': 1, 'technology': 1,...
{'AI': 1, 'cobots: 1, computerized': 3,....
Файл CVS Формат:
Title | Text | URL
Что если бы я попробовал:
count = defaultdict(int)
df = pd.read_csv("AppleFilterTest01.csv")
for text in df["Text"].iteritems():
for row in text:
print(row)
if row in words:
count[w] += 1
print(count)
вывод:
defaultdict(<class 'int'>, {})
Если кто-то может предложить какие-либо рекомендации, советы или помощь, я был бы очень признателен. Спасибо.