我有一个名为keywords的字符串,它由一些用-标记分隔的句子组成。我想在我的keywords变量中获取每个单词的词干,同时使其具有相同的形式(其中每个短语用-标记分隔)

我尝试通过使用keywords函数在.split()中拆分每个短语,然后将每个短语标记为单个单词,然后阻止它们来做到这一点。但是我无法将输出连接成与keywords变量相同的形式。这是尝试:

import nltk
from nltk.stem.isri import ISRIStemmer

stemmer = ISRIStemmer()
keywords =" الاسلام-التوحيد-الكافرون-افتراؤهم علي الله و تكذيبهم و جدالهم- النبوة-اثبات نبوته وصدق ما جاء به-وظيفته وصدق ما اوحى اليه"
phrases = keywords.split("-")
for phrase in phrases:
    tokens = nltk.word_tokenize(phrase)
    for token in tokens:
        stemmedTokens = stemmer.stem(token)


这给了我每个词干分别是这样的:

سلم
وحد
كفر
فرؤ
علي
الل
و
كذب
...


但我希望输出完全像这样:

 سلم-وحد-كفر-فرؤ علي الل و كذب وجدل-نبةاثب نبة صدق ما جاء به-وظف صدق ما وحي اليه


我希望每个单词都被词干并以字符串形式表示,该字符串变量具有与keywords变量相同的形式,即:

" الاسلام-التوحيد-الكافرون-افتراؤهم علي الله و تكذيبهم و جدالهم- النبوة-اثبات نبوته وصدق ما جاء به-وظيفته وصدق ما اوحى اليه"


有什么帮助吗?

最佳答案

我相信您只想在内部循环后添加-。这样您的代码将是:

import nltk
from nltk.stem.isri import ISRIStemmer

stemmer = ISRIStemmer()

keywords =" الاسلام-التوحيد-الكافرون-افتراؤهم علي الله و تكذيبهم و جدالهم- النبوة-اثبات نبوته وصدق ما جاء به-وظيفته وصدق ما اوحى اليه"
phrases = keywords.split("-")
stemmedTokens = []
for phrase in phrases:
    tokens = nltk.word_tokenize(phrase)
    for token in tokens:
        stemmedTokens = stemmer.stem(token)
    stemmedTokens.append("-") if i + 1 is not len(phrases) else None


另外,您可以使用列表推导:)

stemmedTokens = []
for i, phrase in enumerate(phrases):
    tokens = nltk.word_tokenize(phrase)
    [stemmedTokens.append(stemmer.stem(token)) for token in tokens]
    stemmedTokens.append("-") if i + 1 is not len(phrases) else None

关于python - 想要帮助将词干和短语词干后再连接起来以形成字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54328614/

10-13 01:49