Параллельный список для аннотирования фраз - PullRequest
0 голосов
/ 30 августа 2018

Предположим, у меня есть текст, например:

text = 'Ophelia is a character in William Shakespeare's drama Hamlet. She is a young noblewoman of Denmark, the daughter of Polonius, sister of Laertes, and potential wife of Prince Hamlet.'

и параллельный список ложных значений

wantedWords = [False]*len(text.split())

и список фраз и слов, например:

phrases = ['Ophelia', 'Hamlet', 'daughter of Polonius', 'Prince Hamlet']

Хотелось бы, чтобы для каждого экземпляра массива фраз, найденного в тексте, для значения wantedWords было установлено значение True.

Поэтому список требуемых слов становится:

wanted Words = [True, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, False, True, True]

1 Ответ

0 голосов
/ 30 августа 2018

Это может помочь.

text = "Ophelia is a character in William Shakespeare's drama Hamlet. She is a young noblewoman of Denmark, the daughter of Polonius, sister of Laertes, and potential wife of Prince Hamlet."
wantedWords = []
phrases = ['Ophelia', 'Hamlet', 'daughter of Polonius', 'Prince Hamlet']

for i in sorted(phrases, key=lambda x: len(x), reverse=True):    #Sorting the phrases list by len of elements. 
    if i in text:
        text = text.replace(i, "*"*len(i.split()))     #Replaceing found phase with *

for i in text.split():
    if "*" in i:
        for k in range(i.count("*")):
            wantedWords.append(True)
    else:
        wantedWords.append(False)

print(wantedWords)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...