Обнаружение нескольких удлинений в тексте - PullRequest
0 голосов
/ 28 января 2020

Я делаю некоторые задачи по НЛП. Итак, мне нужно определить несколько удлинений и одно удлинение в тексте.

Пример одинарного удлинения: simpleeeeeeeeeee

Пример нескольких удлинений: Goooooodd dddddd

Мне удалось использовать следующий код для определения удлинения в тексте.

def find_total_elongations(str):
    regex = re.compile(r"(.)\1{2}")
    list = [word for word in str.split() if regex.search(word)]
    return len(list)

Пример ввода: Whyyyyyyyy arrrrrreeeeee youuuuuuuu sooooooooooo serrrrrrrrrrriiiiiiious?

Пример выходных данных:

Одиночное удлинение: ["Whyyyyyyyy", "youuuuuuuu", "sooooooooooo"]

Множественное удлинение: ["arrrrrreeeeee" , "serrrrrrrrrriiiiiiious"]

Как я могу изменить приведенный выше код для определения множественного удлинения и одиночного удлинения отдельно?

Ответы [ 3 ]

1 голос
/ 28 января 2020

Попробуйте немного его изменить:

\w*(.)\1{1}\w*
0 голосов
/ 28 января 2020

Вы можете использовать groupby и обнаружить любые группы, длина которых больше 1, а затем убедиться, что не более одной группы

len(list(filter(lambda x: sum(1 for _ in x[1]) > 1, groupby("goodoo")))) > 1
0 голосов
/ 28 января 2020

Попробуйте itertools.groupby. Пример из документов:

# [k for k, g in groupby('AAAABBBCCDAABBB')] --> A B C D A B
# [list(g) for k, g in groupby('AAAABBBCCD')] --> AAAA BBB CC D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...