Хочу помочь объединить мои токены и фразы снова, чтобы сформировать строку после их - PullRequest
0 голосов
/ 23 января 2019

У меня есть строка с именем 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:

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

Любая помощь?

1 Ответ

0 голосов
/ 24 января 2019

Полагаю, вы просто хотите добавить - после внутреннего цикла. Чтобы ваш код был:

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
...