Удалить униграммы из списка биграмм

Мне удалось создать 2 списка из текстовых документов. Первый — мой список биграмм:

keywords = ['nike shoes','nike clothing', 'nike black', 'nike white']

и список стоп-слов:

stops = ['clothing','black','white']

Я хочу удалить остановки из списка ключевых слов. Используя приведенный выше пример, результат, который я получаю, должен выглядеть следующим образом:

new_keywords = ['nike shoes','nike', 'nike', 'nike'] --> eventually I'd like to remove those dupes. 

Вот что я сделал до сих пор:

keywords = open("keywords.txt", "r")
new_keywords = keywords.read().split(",")
stops = open("stops.txt","r")
new_stops = stops.read().split(",")
[i for i in new_keywords if i not in new_stops]

Проблема, с которой я сталкиваюсь, заключается в том, что он ищет комбинации из двух слов, а не одно слово останавливается....


person BradF    schedule 18.07.2015    source источник


Ответы (2)


Вы можете сделать это по шагам. Сначала определите вспомогательную функцию:

def removeStop(bigram, stops):
    return ' '.join(w for w in bigram.split() if not w in stops)

А потом:

[removeStop(i,new_stops) for i in new_keywords] 
person John Coleman    schedule 18.07.2015

если у вас есть 2 списка, это будет делать то, что вы хотите:

new_keywords = []

for k in keywords:
    temp = False

    for s in stops:
        if s in k:
           new_keywords.append(k.replace(s,""))
           temp = True

    if temp == False:
        new_keywords.append(k)

Это создаст список, как вы опубликовали:

['nike shoes', 'nike ', 'nike ', 'nike ']

Чтобы устранить двойники, сделайте следующее:

new_keywords = list(set(new_keywords))

Итак, окончательный список выглядит так:

['nike shoes', 'nike ']

введите здесь описание изображения

person devramon22    schedule 18.07.2015
comment
Большое спасибо за ваш отзыв, у меня есть список, однако ваше вышеприведенное предложение не дало того результата, который вы предполагали. То, что у вас есть, имеет для меня смысл, но не ясно, почему это не сработало. - person BradF; 19.07.2015
comment
Странный. Я только что проверил его еще раз, и у меня он отлично работает. Какую версию Python вы используете? Я добавил скриншот, который показывает, что именно я сделал. - person devramon22; 20.07.2015
comment
работает. это был я, а не ты :) большое спасибо. все решено и очень полезно! - person BradF; 20.07.2015