Премахване на униграми от списък с биграми

Успях да създам 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 думи, а не спиранията на една дума....


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