2015-07-18 3 views
2

Мне удалось создать 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] 

Проблема, которую я имею в том, что он ищет 2 слова комбо, а не одно слово останавливается ....

ответ

1

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

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] 
1

при условии, у вас есть 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 '] 

Чтобы устранить d oubles сделать это:

new_keywords = list(set(new_keywords)) 

Таким образом, окончательный список выглядит следующим образом:

['nike shoes', 'nike '] 

enter image description here

+0

спасибо за ваши отзывы, у меня есть список, однако, ваше выше предложение техника его подводит производить результат, который вы предложили. То, что у вас есть, имеет смысл для меня, но не ясно, почему это не сработало. – BradF

+0

Странно. Я только что проверил его и отлично работал для меня. Какую версию Python вы используете? Я добавил screeshot, который показывает, что я сделал. – Pendragon22

+0

работает. это был я, а не ты :) спасибо mil. все решено и очень полезно! – BradF