R/python:从训练语句构建模型

2024-10-04 05:20:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要达到什么目的:
我一直在寻找一种方法,但我找不到一种(有效的)方法:

  • 从例句中建立一个模型,同时考虑词序和同义词。在
  • 根据这个模型映射一个句子,得到一个相似度得分(这样一个分数表明这个句子有多适合这个模型,换句话说,它适合用来训练模型的句子)

我的尝试

  • Python:nltkgensim结合使用(就我所能编写和阅读的范围而言,它只能使用单词相似性(但不能按顺序排列 账户)。

  • R:使用tm构建了一个TermDocumentMatrix,看起来很有前途,但却不能将任何东西映射到这个矩阵上。此外,这个TermDocumentMatrix似乎考虑了顺序,但遗漏了同义词(我想)。
    enter image description here
    我知道柠檬化并不顺利,哈哈:)

问题:
有没有任何方法可以使用R或Python实现上述步骤?一个简单的示例代码将是很好的(或参考一个好的教程)


Tags: 方法模型目的账户相似性单词分数句子
1条回答
网友
1楼 · 发布于 2024-10-04 05:20:41

有很多方法可以完成上面描述的工作,当然,要找到一个优化的解决方案还需要大量的测试。但是这里有一些有用的功能可以帮助使用python/nltk解决这个问题。在

build a model from example sentences while taking word order and synonyms into account.

1。标记化

在这一步中,你需要将单个句子分解成一系列单词。在

样本代码:

import nltk
tokenized_sentence = nltk.word_tokenize('this is my test sentence')

print(tokenized_sentence)

['this', 'is', 'my', 'test', 'sentence']  

2。查找每个单词的同义词。

样本代码:

^{pr2}$

如果您不熟悉,可以随意研究synsets,但现在只需知道上面返回的是一个列表,因此可能会返回多个synset。在

从synset可以得到同义词列表。在

样本代码:

 print( wn.synset('car.n.01').lemma_names() )

 ['car', 'auto', 'automobile', 'machine', 'motorcar']

很好,现在你可以把你的句子转换成一个单词列表,并且你可以找到句子中所有单词的同义词(同时保持句子的顺序)。此外,您可能希望考虑删除停止字和词干标记,所以如果您认为有帮助的话,可以随意查找这些概念。在

当然,您需要为所有的句子编写代码,并将数据存储在某种数据结构中,但这可能超出了本问题的范围。在

map a sentence against this model and get a similarity score (thus a score indicating how much this sentence fits the model, in other words fits the sentences which were used to train the model)

这很难回答,因为做这件事的可能性是无穷的,但这里有几个例子来说明你如何处理它。在

如果你对二元分类感兴趣,你可以做一些简单的事情,比如,我以前见过这个句子的变化句吗?如果是,得分为1,否则得分为0。这可能有用,但可能不是你想要的。在

根据python词典中新句子的存储情况,计算出python词典中每个句子的词性。在

示例:

training_sentence1='这是我最棒的句子'

training_sentence2='这不可怕'

下面是一个关于如何存储这两个句子的数据结构示例:

my_dictionary = {
    'this': {
        'is':{
            'my':{
                'awesome': {
                    'sentence':{}
                }
            },
            'not':{
                'awesome':{}
            }
        }
    }
}

然后你可以写一个函数来遍历每一个新句子的数据结构,根据它的深度,给它一个更高的分数。在

结论:

以上两个例子只是解决相似性问题的一些可能方法。关于计算文本间语义相似度的文章/白皮书不计其数,所以我的建议是探索多种选择。在

我故意排除了有监督的分类模型,因为您从来没有提到过可以访问带标签的培训数据,但是如果您有一个黄金标准的数据源,那么这种方法当然是可能的。在

相关问题 更多 >