Как сделать вектор отсчета - Python - PullRequest
0 голосов
/ 14 февраля 2019

Если у меня есть конкретное слово в строке, я хочу создать вектор, который подсчитывает слова в строке и добавляет их к вектору.

Ниже приведен пример того, что я хочу.

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

Если вы знаете быстрое и хорошее решение, я был бы признателен, если бы вы дали мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...