Я пытаюсь удалить стоп-слова из строк, хранящихся в панде DataFrame, но по какой-то причине вместо итерации по словам в строках я итерирую по каждому символу, что дает мне нежелательный результат.Я не смог найти решение этой проблемы.
Может кто-нибудь объяснить, почему я перебираю символы вместо слов в фразе?
Я представляю код, который я использую, и результаты, которые я получаю ниже.Стоп-слова и строки на португальском, но я не думаю, что это влияет на результаты.
#List of stop words
stp = set(stopwords.words('portuguese') + list(punctuation))
print(stp)
trainData = pd.DataFrame(columns= ['text', 'response'])
corpus = []
with open('pred.txt', 'r') as f_input:
corpus += [strip_multiple_whitespaces(line) for line in f_input]
corpus_1 = [strip_non_alphanum(line) for line in corpus]
corpus_2 = [line.rstrip() for line in corpus_1]
train_data = [line.split(' ') for line in corpus_2]
for line in train_data:
if(line[0] == ''):
train_data.remove(line)
tmp = pd.DataFrame({'text':train_data[::2], 'response':train_data[1::2]})
trainData = trainData.append(tmp[['text', 'response']], ignore_index=True)
trainData['text'] = trainData['text'].astype(str).str.lower()
print(trainData)
trainData['text'] = trainData['text'].apply(lambda x: [word for word in x if word not in stp])
print(trainData)
Это результат печати стоп-слов:
{'com', 'meu', 'fora', '/', ',', 'aos', 'tu', 'estiver', 'esteve', 'fossem', 'e', 'seu', 'já', '|', 'minha', 'te', 'foi', 'há', 'dos', 'ele', 'fôramos', 'tuas', '[', 'foram', 'para', 'quando', 'for', 'tua', 'estávamos', 'eles', 'sou', 'tiveram', 'estivemos', 'também', 'aquela', 'você', 'tenho', 'às', 'houvera', '-', 'éramos', 'mais', 'houveríamos', '^', '`', '@', 'delas', 'estivéramos', 'nas', 'dele', 'esteja', 'hajamos','hei', 'ela', 'se', ':', 'por', 'na', 'estiverem', 'houveria', 'pelos', 'estivessem', 'tenhamos', 'nos', 'até', 'nós', 'estão', 'tenha', 'teremos', 'nem', 'teu', 'ou', 'estejam', 'fomos', 'sejam', 'forem', 'estive', 'houverei', 'me', '*', 'uma', 'meus', 'houvemos', 'o', 'vocês', 'aquilo', 'não', '%', "'", 'ao', 'minhas', 'tinham', '+', 'do', 'aquele', 'sua', 'hajam', 'sejamos', 'a', 'este', 'num', 'era', 'terá', 'serão', 'tivesse', '=', 'houver', 'esse', 'tiverem', 'um', 'mas', 'nossa', 'está', 'houvéssemos', 'serei', 'houverão', 'estivermos', '?', '~', 'teus', 'fôssemos', 'havemos', 'deles', 'dela', 'tivéssemos', 'tivemos', 'depois', '{', 'nossos', 'nossas', 'estivera', 'seria', ')', 'houvéramos', 'seriam', 'formos', 'estas', 'tinha', 'estejamos', 'tivessem', 'eram', 'será', 'fosse', 'estes', 'teria', 'esta', 'estou', 'pelas', 'houveremos', 'tem', 'houveram', 'estamos', 'lhes', 'estivesse', 'tive', 'numa', 'seja', 'tiver', 'que', '$', 'estavam', '<', 'terei', 'houverá', 'seríamos', '>', 'teríamos', 'pela', 'isto', 'à', 'as', 'esses', ';', 'essas','teve', 'suas', 'de', 'em', 'qual', 'houveriam', '#', 'das', '.', '(', 'hão', 'são', 'mesmo', 'sem', 'vos', 'houve', 'lhe', 'houvermos', 'só', 'houvesse', 'seremos', '\\', '}', 'somos', 'como', 'aqueles', 'estiveram', 'temos', 'da', 'tivéramos', 'eu', '"', 'muito', '_', 'nosso', 'pelo', 'no', 'estava', ']', 'tém', 'estivéssemos', 'isso', '&', '!', 'haja', 'tenham', 'elas', 'tivermos', 'terão', 'quem', 'tínhamos', 'teriam', 'os', 'houverem', 'fui', 'tivera', 'aquelas', 'entre', 'seus', 'essa', 'houvessem'}
Это мойКадр данных перед удалением стоп-слов:
text response
0 ['o', 'que', 'causa'] [causadorDe]
1 ['o', 'que', 'leva', 'á', 'existência', 'de'] [causadorDe]
2 ['porquê', 'é', 'que', 'existe'] [causadorDe]
3 ['o', 'que', 'é', 'que', 'esta', 'contido', 'no'] [contidoEm]
4 ['o', 'que', 'é', 'que', 'esta', 'contido', 'na'] [contidoEm]
5 ['qual', 'é', 'o', 'antónimo', 'de'] [antonimoNDe]
6 ['qual', 'é', 'o', 'contrário', 'de'] [antonimoNDe]
7 ['o', 'que', 'é', 'o', 'oposto', 'de'] [antonimoNDe]
8 ['qual', 'é', 'a', 'consequência', 'de'] [finalidadeDe]
9 ['qual', 'é', 'o', 'resultado', 'de'] [finalidadeDe]
10 ['o', 'que', 'resulta', 'de'] [finalidadeDe]
11 ['o', 'que', 'usaria', 'para'] [finalidadeDe]
12 ['o', 'que', 'pode', 'ser', 'usado', 'para'] [finalidadeDe]
13 ['qual', 'é', 'a', 'origem', 'de'] [originarioDe]
14 ['de', 'onde', 'vem', 'o'] [originarioDe]
15 ['de', 'onde', 'é', 'derivado', 'o'] [originarioDe]
16 ['qual', 'é', 'a', 'origem', 'de'] [originarioDe]
17 ['de', 'onde', 'vem', 'a'] [originarioDe]
18 ['de', 'onde', 'é', 'derivada', 'a'] [originarioDe]
19 ['para', 'que', 'serve', 'um'] [servePara]
20 ['para', 'que', 'usaria', 'um'] [servePara]
21 ['qual', 'é', 'a', 'finalidade', 'de', 'um'] [servePara]
22 ['para', 'que', 'serve', 'uma'] [servePara]
23 ['para', 'que', 'usaria', 'uma'] [servePara]
24 ['qual', 'é', 'a', 'finalidade', 'de', 'uma'] [servePara]
И вот результат после попытки удалить эти стоп-слова:
text response
0 [ , q, u, , c, u, s] [causadorDe]
1 [ , q, u, , l, v, , á, , x, i, s, t, ê, n, ... [causadorDe]
2 [p, r, q, u, ê, , é, , q, u, , x, i, s, t] [causadorDe]
3 [ , q, u, , é, , q, u, , s, t, , c, n, t, ... [contidoEm]
4 [ , q, u, , é, , q, u, , s, t, , c, n, t, ... [contidoEm]
5 [q, u, l, , é, , , n, t, ó, n, i, m, , d] [antonimoNDe]
6 [q, u, l, , é, , , c, n, t, r, á, r, i, , d] [antonimoNDe]
7 [ , q, u, , é, , , p, s, t, , d] [antonimoNDe]
8 [q, u, l, , é, , , c, n, s, q, u, ê, n, c, ... [finalidadeDe]
9 [q, u, l, , é, , , r, s, u, l, t, d, , d] [finalidadeDe]
10 [ , q, u, , r, s, u, l, t, , d] [finalidadeDe]
11 [ , q, u, , u, s, r, i, , p, r] [finalidadeDe]
12 [ , q, u, , p, d, , s, r, , u, s, d, , p, r] [finalidadeDe]
13 [q, u, l, , é, , , r, i, g, m, , d] [originarioDe]
14 [d, , n, d, , v, m, ] [originarioDe]
15 [d, , n, d, , é, , d, r, i, v, d, ] [originarioDe]
16 [q, u, l, , é, , , r, i, g, m, , d] [originarioDe]
17 [d, , n, d, , v, m, ] [originarioDe]
18 [d, , n, d, , é, , d, r, i, v, d, ] [originarioDe]
19 [p, r, , q, u, , s, r, v, , u, m] [servePara]
20 [p, r, , q, u, , u, s, r, i, , u, m] [servePara]
21 [q, u, l, , é, , , f, i, n, l, i, d, d, , ... [servePara]
22 [p, r, , q, u, , s, r, v, , u, m] [servePara]
23 [p, r, , q, u, , u, s, r, i, , u, m] [servePara]
24 [q, u, l, , é, , , f, i, n, l, i, d, d, , ... [servePara]