Очистка данных на фрейме данных - повторение слов независимо от регистра и множественного числа - PullRequest
0 голосов
/ 29 мая 2019

У меня есть столбец в моем DataFrame, и теперь мое требование:

  1. Повторение слов не должно присутствовать в каждом ряду.
  2. Предположим, у меня есть собака и собаки в моемдолжна присутствовать только строка string
  3. Чувствительно к регистру: даже если у меня есть собака и собаки, она также должна удалять собак и возвращать только собаке
  4. особых случаев, таких как собака и собака, затем удалять собак и результатдолжен содержать только собаку.

Пожалуйста, найдите приведенный ниже пример кода, который я использовал.

1. Попытка обуздать и лемматизировать данные, но не точные 2. Даже использовать spacy и лемматизироватьданные затем также тот же результат

вывод выглядит немного лучше, но при использовании лемматизации другие слова действуют


m='dog ran out of Dogs and Dog ran out of cat and dog''s adidas'

try:
    def stem(tokens):
        x=[]
        stemmer = SnowballStemmer(language='english')
        for token in tokens:  
            x.append(stemmer.stem(token))
        return x
except:
    print('problem at stemming')


s12=' '.join(stem(m.split()))


#####Then written code for duplicate removal

try:
    def unique_list(list1):
        marker = set()
        result = [not marker.add(x.casefold()) and x for x in list1 if x.casefold() not in marker]
        return result
except:
    print("Problem in removing duplicates")


s5=' '.join(unique_list(s12.split()))


Фактическая строка: «у собаки закончились собаки, а у собаки закончились кошка и собака»'s adidas' Фактический результат: «собака исчерпала собаку, а собака закончилась, а кошка и собака adida»

Таким образом, в фактическом результате это также лемматизирует adidas, которое является последним словом в strinг.оно становится «adida» вместо adidas

Ожидаемый результат: «собака исчерпала собаку и собака выбежала из кошки и собаки adidas»

Нужна ваша помощь или помощь в решении этой проблемы.

1 Ответ

0 голосов
/ 03 июня 2019
from nltk import WordNetLemmatizer
lemm = WordNetLemmatizer()
sent  = 'dog ran out of Dogs and Dog ran out of cat and dog''s adidas'
word_token = [y.lower() for y in sent.split()]
print(' '.join([lemm.lemmatize(word,'n') for word in word_token]))

#o/p
'dog ran out of dog and dog ran out of cat and dog adidas'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...