NLP文本转换更改主题

时间:2019-04-24 09:59:24

标签: nlp

我是NLP领域的新手,但想知道当前是否有任何简便的方法(使用服务或OSS等)在已知原始主题的情况下使用NLP更改大量文本的主题最好是否可以使用多种语言来提供这样的方法?)(等效于方法{(3)}上的句子().toPastTense()方法):

让我们说原始文本是关于“您”的,并且您知道情况总是如此,但是您想自动生成一个文本版本,将其更改为“您的兄弟”。

(非常荒谬)的示例:

  

“到达角落时,您应该走下大厅。”

会变成

  

“你的兄弟应该走到大厅,因为他到达角落时   完成。”

据我了解,这种类型的文本转换依赖于词形化(如这篇文章https://nlp-compromise.github.io所示),但是由于我一直在研究文本转换方法,所以我还没有发现任何与之相关的方法。句子的主题?

1 个答案:

答案 0 :(得分:1)

我一无所知,但是肯定可以做到。例如,使用TextBlob可以尝试使用词性的功能。显然,这里您需要的不仅仅是这些小片段,例如一个检查主语/动词一致性的函数,但这只是方法的一个示例,希望它能为您带来深思。

from textblob import TextBlob
from textblob.taggers import NLTKTagger
from textblob import Word

def lil_subj_replacer(phrase,input_subj,input_prp):
    nltk_tagger = NLTKTagger()
    blob = TextBlob(phrase,pos_tagger=nltk_tagger)
    subject = True
    for i,keyval in enumerate(blob.pos_tags):
        key = keyval[0]
        value = keyval[1]
        if (value == 'PRP'):
            if subject:
                blob.words[i] = input_subj
                subject = False
            else:
                blob.words[i] = input_prp

            blob.words[i+1] = Word(blob.words[i+1]).lemmatize('v')
    return ' '.join(blob.words)

my_phrase = 'You should go down the hall, as you reach the corner you are done.'
print(my_phrase)
print(lil_subj_replacer(phrase=my_phrase,input_subj='Your brother',input_prp='he'))

原始:You should go down the hall, as you reach the corner you are done.

不作形容:Your brother should go down the hall as he reach the corner he are done

修饰动词:Your brother should go down the hall as he reach the corner he be done

编辑:由于您提到了lemmaz,因此添加了示例。