Проблемы с использованием снежного кома для списка Turki sh слов в Python - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь использовать библиотеку под названием snowballstemmer в Python, но, похоже, она работает не так, как ожидалось. В чем может быть причина? Пожалуйста, смотрите мой код ниже.

Мой набор данных:

df=[['musteri', 'hizmetlerine', 'cabuk', 'baglaniyorum'],['konuda', 'yardımcı', 'oluyorlar', 
   'islemlerimde']]

Я применил пакет Snowballstemmer и импортировал TurkishStemmer

  from snowballstemmer import TurkishStemmer
  turkStem=TurkishStemmer()
  data_words_nostops=[turkStem.stemWord(word) for word in df]
  data_words_nostops

  [['musteri', 'hizmetlerine', 'cabuk', 'baglaniyorum'],
   ['konuda', 'yardımcı', 'oluyorlar', 'islemlerimde']]

К сожалению, это не сработало. Но когда я применил его к отдельным словам, он работает как положено:

 turkStem.stemWord("islemlerimde")
 'islem'

В чем может быть проблема? Любая помощь будет оценена.

Спасибо.

1 Ответ

3 голосов
/ 03 мая 2020

Вы имели в виду иметь список строк вместо списка списков, содержащих строки?

Мне удалось получить основы для каждого слова, когда я переформатировал ваш код следующим образом:

from snowballstemmer import TurkishStemmer

df = [
    'musteri',
    'hizmetlerine',
    'cabuk',
    'baglaniyorum',
    'konuda',
    'yardımcı',
    'oluyorlar',
    'islemlerimde'
]
turkStem = TurkishStemmer()
data_words_nostops = [turkStem.stemWord(word) for word in df]
print(data_words_nostops)

Если у вас есть список списков строк (скажем, это то, что вы определили как df), и вы хотите свести его к одному списку слов, вы можете сделать что-то вроде этого:

df = [
    ['musteri', 'hizmetlerine', 'cabuk', 'baglaniyorum'],
    ['konuda', 'yardımcı', 'oluyorlar', 'islemlerimde']
]
flattened_df = [item for sublist in df for item in sublist]

# Output:
# ['musteri', 'hizmetlerine', 'cabuk', 'baglaniyorum', 'konuda', 'yardımcı', 'oluyorlar', 'islemlerimde']

Кредит за вышеупомянутое идет в это сообщение StackOverflow.

В качестве альтернативы, вы можете просто исправить цикл, чтобы решить проблему с вашим исходным макетом:

df = [
    ['musteri', 'hizmetlerine', 'cabuk', 'baglaniyorum'],
    ['konuda', 'yardımcı', 'oluyorlar', 'islemlerimde']
]
turkStem = TurkishStemmer()
all_stem_lists = []

for word_group in df:
    output_stems = []
    for word in word_group:
        stem = turkStem.stemWord(word)
        output_stems.append(stem)
    all_stem_lists.append(output_stems)

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