Python 中的土耳其语单词列表使用 snowballstemmer 时出现问题
Problems using snowballstemmer for a list of Turkish words in Python
我正在尝试使用 Python 中名为 snowballstemmer 的库,但它似乎没有按预期工作。可能是什么原因?请在下面查看我的代码。
我的数据集:
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'
可能是什么问题?任何帮助将不胜感激。
谢谢。
您是要一个字符串列表而不是包含字符串的列表列表吗?
当我以这种方式重新格式化您的代码时,我能够获得每个单词的词干:
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']
以上内容归功于 this Whosebug post。
或者,您可以只更正循环以解决原始布局的问题:
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)
我正在尝试使用 Python 中名为 snowballstemmer 的库,但它似乎没有按预期工作。可能是什么原因?请在下面查看我的代码。
我的数据集:
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'
可能是什么问题?任何帮助将不胜感激。
谢谢。
您是要一个字符串列表而不是包含字符串的列表列表吗?
当我以这种方式重新格式化您的代码时,我能够获得每个单词的词干:
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']
以上内容归功于 this Whosebug post。
或者,您可以只更正循环以解决原始布局的问题:
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)