Если у меня есть конкретное слово в строке, я хочу создать вектор, который подсчитывает слова в строке и добавляет их к вектору.
Ниже приведен пример того, что я хочу.
word_list = ['a','b'] #this words of list is what I say 'specific word'.
Список в списке ниже - это список, который нужно извлечь, если будет найдено любое из вышеперечисленных слов.
[
['a', 'b', 'c']
['b', 'c', 'b']
['r', 'b', 'h']
['q', 'w', 'r']
['j', 'a', 'd']
['b', 'd', 'a']
]
, и результат, который я хочу получить, таков:
word | a | b
-----------------
a | 0 | 2
b | 2 | 0
c | 0 | 2
d | 2 | 0
h | 0 | 1
j | 1 | 0
r | 0 | 1
и я пытаюсь немного кодировать, но у меня нет навыков, и все мои данные обрабатываются слишком медленно.
Ниже приведена моя попытка кода ...
import pandas as pd
from konlpy.tag import Kkma
import numpy as np
test = pd.DataFrame(['a b c','b c b','r b h','q w r','j a d','b d a'],columns = ['txt'])
test_vec= []
for i in range(len(test)):
test_vec.append(operater.morphs(test['txt'][i]))
ext = ['a','b']
word = ['word']
result = pd.DataFrame([],columns = word + ext)
locate = 0
for i in range(len(test_vec)):
for j in range(len(ext)):
print('step0')
if ext[j] in test_vec[i]:
print('step1')
for k in range(len(test_vec[i])):
if test_vec[i][k] != ext[j]:
print('step2')
result.loc[locate] = np.nan
if np.size(np.where(result['word'] == result[ext[j]].loc[locate])) == 0:
result[ext[j]].loc[locate] = 1
result['word'].loc[locate] = test_vec[i][k]
else:
result[ext[j]].loc[locate] = result[ext[j]].loc[locate] + 1
locate = locate + 1
Если вы знаете быстрое и хорошее решение, я был бы признателен, если бы вы дали мне знать.