Как конвертировать отрицания и отдельные слова с одинаковыми повторяющимися буквами - PullRequest
1 голос
/ 30 марта 2019

У меня есть фрейм данных, в котором есть столбец с текстовыми данными.Я хочу удалить из текстовых данных слова, которые ничего не значат, и преобразовать отрицания типа «не» в «нет».Потому что, когда я удаляю знаки пунктуации, «не» становится «не так», а когда я удаляю слова, содержащие буквы меньше длины 2, «т» удаляется полностью.Итак, я хочу выполнить следующие 3 задачи: 1) преобразовать отрицания типа «не» в «не есть» 2) удалить слова, которые ничего не значат 3) удалить буквы длиной менее 2 букв. Например, столбец df выглядит примерно так:this-

user_id     text data column
    1        it's the coldest day
    2        they aren't going
    3        aa
    4        how are you jkhf
    5        v
    6        ps
    7       jkhf

Вывод должен быть-

user_id     text data column
    1        it is the coldest day
    2        they are not going
    3        
    4        how are you 
    5        
    6       
    7      

Как это реализовать?

Ответы [ 2 ]

1 голос
/ 30 марта 2019
def is_repetitive(w):
    """Predicate, true for words like jj or aaaaa."""
    w = str(w)  # caller should have provided a single word as input
    return len(w) > 1 and all((c == w[0]  for c in w[1:]))

Подайте все слова в корпусе для этой функции, чтобы накопить список повторяющихся слов.Затем добавьте такие слова в свой список стоп-слов.

0 голосов
/ 30 марта 2019

1) Используйте инструменты лемматизации SpaCy или NLTK для преобразования строк (хотя они и делают другие вещи, такие как преобразование множественного числа в единственное число - так что вам может понадобиться написать собственный код для этого).

2) Используйте стоп-слова из NLTK или spacy, чтобы удалить очевидные стоп-слова.Кроме того, подайте им свой собственный список стоп-слов (их стоп-словами по умолчанию являются такие, как, а, the).

3) Используйте базовый фильтр, если len <2 удалить строку </p>

...