删除python中的停用词

时间:2017-09-16 14:01:19

标签: python python-2.7 stop-words

我正在开发一种删除停用词的算法。 我正在将一个txt文件转换为一个列表,从而传递算法以便删除。

文件行示例:

video[4]

代码

'mora vai nascer viver cair falar','positivo'
'deixa ver entendi vai crescer vai passar ve','positivo'
'so deveria ter foi agradeco de passei passei fez','positivo'
'nunca nao nao muito nao mais','negativo'
'a nao ate infelizmente ai ate quando','negativo'
'nao perto nao quanto menos nao sim nao nem simplesmente','negativo'

错误

with open('BasePalavras.txt') as arquivo:
     baseTeste = [linha.strip() for linha in arquivo]


stopwords = ['a', 'agora', 'algum', 'alguma', 'aquele', 'aqueles', 'de', 'deu', 'do', 'e', 'estou', 'esta', 'esta',
         'ir', 'meu', 'muito', 'mesmo', 'no', 'nossa', 'o', 'outro', 'para', 'que', 'sem', 'talvez', 'tem', 'tendo',
         'tenha', 'teve', 'tive', 'todo', 'um', 'uma', 'umas', 'uns', 'vou']

def removestopword(texto):
     frases=[]
     for(palavras, emocao) in texto:
         semstopwords = [p for p in palavras.splits() if p not in stopwords]
         frases.append((semstopwords, emocao))
return frases

print (removestopword(baseTeste))

2 个答案:

答案 0 :(得分:1)

试试这个:

with open('BasePalavras.txt') as arquivo:
    baseTeste = [linha.strip().split(',') for linha in arquivo]


stopwords = ['a', 'agora', 'algum', 'alguma', 'aquele', 'aqueles', 'de', 'deu', 'do', 'e', 'estou', 'esta', 'esta',
         'ir', 'meu', 'muito', 'mesmo', 'no', 'nossa', 'o', 'outro', 'para', 'que', 'sem', 'talvez', 'tem', 'tendo',
         'tenha', 'teve', 'tive', 'todo', 'um', 'uma', 'umas', 'uns', 'vou']

def removestopword(texto):
    frases=[]
    for (palavras, emocao) in texto:
        semstopwords = [p for p in palavras.split() if p not in stopwords]
        frases.append((semstopwords, emocao))
    return frases

print (removestopword(baseTeste))

baseTeste = [linha.strip() for linha in arquivo]更改为baseTeste = [linha.strip().split(',') for linha in arquivo]

semstopwords = [p for p in palavras.splits() if p not in stopwords]semstopwords = [p for p in palavras.split() if p not in stopwords]

答案 1 :(得分:1)

我将如何做到这一点。

stopwords = ['a', 'agora', 'algum', 'alguma', 'aquele', 'aqueles', 'de', 'deu', 'do', 'e', 'estou', 'esta', 'esta',
     'ir', 'meu', 'muito', 'mesmo', 'no', 'nossa', 'o', 'outro', 'para', 'que', 'sem', 'talvez', 'tem', 'tendo',
     'tenha', 'teve', 'tive', 'todo', 'um', 'uma', 'umas', 'uns', 'vou']

def remove_stopwords(text):
    phrases = []
    for (sentence, _) in text:
        sentence_without_stopwords = [word for word in sentence.split() if word not in stopwords]
        phrases.append(sentence_without_stopwords)
    return phrases

with open('input.txt') as raw_text:
    sentence_sentiments = []
    lines = [line for line in raw_text]
    for line in lines:
        sentence, sentiment = line.split(',')
        sentence_sentiments.append((sentence[1:-1], sentiment[1:-1]))
    print(remove_stopwords(sentence_sentiments))

请注意,在您提供的代码中,baseTeste是一个包含字符串列表的数组,表示输入文件的行。这不是您想要的,因为您试图在这些行内的for(palavras, emocao) in texto:对上循环((sentence, sentiment))。因此,您错过了将每一行拆分为(sentence, sentiment)对的中间步骤。

相关问题