Algorithm 确定「;“善”;以“为基础的短语”;语法的;或;“语境”;相关性

Algorithm 确定「;“善”;以“为基础的短语”;语法的;或;“语境”;相关性,algorithm,nlp,Algorithm,Nlp,给定一个随机的单词串,我想给这个短语分配一个“goodness”分数,其中“goodness”表示语法上的和上下文上的相关性。 例如: "the green tree was tall" [Good score] "delicious tires swim open" [Medium score] "jump an con porch calmly" [Poor score] 我一直在试验这种方法。我曾考虑过使用经过训练的标记器为短语

给定一个随机的单词串,我想给这个短语分配一个“goodness”分数,其中“goodness”表示语法上的和上下文上的相关性。 例如:

"the green tree was tall" [Good score]
"delicious tires swim open" [Medium score]
"jump an con porch calmly" [Poor score]
我一直在试验这种方法。我曾考虑过使用经过训练的标记器为短语中的每个单词指定词性,然后分析语料库中出现的词性模式。这可能给我一个语法上的“善”的暗示。然而,由于标记器本身是在我用于验证的同一个语料库上训练的,我无法想象结果会是可靠的。这种方法也没有考虑词语的上下文相关性。
有人知道这类事情的现有项目或研究吗?您将如何处理此问题?

您可以采用两种不同的方法-监督和半监督

受监督的

假设您有一个带有标签的元组数据集,其形式为
(如示例中的元组),您可以首先将数据集拆分为一个列:测试折叠(例如4:1)

然后,您可以简单地使用BERT特征向量(这些特征向量是在大量自然语言文本上预先训练的)。下面的代码为您提供了句子的向量
绿树很高
(请阅读更多)

假设你对每个句子进行矢量化,然后你可以训练一个简单的逻辑回归模型(sklearn)
学习一组参数,以最小化训练集中这些预测中的错误,最后你可以将测试集句子扔到这个模型上,看看它的行为如何

您还可以使用嵌入向量作为LSTM网络的输入,而不是BERT,用于训练分类器(如一个)

半监督

当您没有足够的标记数据时(尽管您需要一些数据来开始使用),这是适用的

在这种情况下,我认为你可以做的是将一个句子的单词映射成词性标记序列,例如。,
这棵绿树很高
-->
文章形容词名词动词形容词
(有关详细信息,请参阅)

这一步将使您的方法更少地依赖于单词本身。根据这些序列训练的模型将试图发现好句子和坏句子的一些潜在区别特征


特别是,您可以使用双向LSTM运行标准文本分类方法来训练分类器(这次不是使用单词,而是使用更小的词汇量POS标记)。

您可以使用两种不同的方法-监督和半监督

受监督的

假设您有一个带有标签的元组数据集,其形式为
(如示例中的元组),您可以首先将数据集拆分为一个列:测试折叠(例如4:1)

然后,您可以简单地使用BERT特征向量(这些特征向量是在大量自然语言文本上预先训练的)。下面的代码为您提供了句子的向量
绿树很高
(请阅读更多)

假设你对每个句子进行矢量化,然后你可以训练一个简单的逻辑回归模型(sklearn)
学习一组参数,以最小化训练集中这些预测中的错误,最后你可以将测试集句子扔到这个模型上,看看它的行为如何

您还可以使用嵌入向量作为LSTM网络的输入,而不是BERT,用于训练分类器(如一个)

半监督

当您没有足够的标记数据时(尽管您需要一些数据来开始使用),这是适用的

在这种情况下,我认为你可以做的是将一个句子的单词映射成词性标记序列,例如。,
这棵绿树很高
-->
文章形容词名词动词形容词
(有关详细信息,请参阅)

这一步将使您的方法更少地依赖于单词本身。根据这些序列训练的模型将试图发现好句子和坏句子的一些潜在区别特征


特别是,您可以使用双向LSTM运行标准文本分类方法来训练分类器(这次不是使用单词,而是使用更小的词汇量POS标记)。

您可以使用HuggingFace的transformer模型,该模型针对句子的正确性进行了微调。具体而言,该模型必须在语言可接受性语料库(CoLA)上进行微调。这里有一个关于拥抱脸、变形金刚和微调的过程


你还可以得到一个已经微调过的模型,你可以把它放入HuggingFace的变形金刚库的文本分类管道中。该网站拥有经过微调的模型,您可以在那里搜索为CoLA任务进行微调的其他一些模型。

您可以使用HuggingFace的变压器模型,该模型经过微调以确保句子的正确性。具体而言,该模型必须在语言可接受性语料库(CoLA)上进行微调。这里有一个关于拥抱脸、变形金刚和微调的过程


你还可以得到一个已经微调过的模型,你可以把它放入HuggingFace的变形金刚库的文本分类管道中。这个网站提供了微调模型,你可以在那里找到几个对可口可乐任务进行微调的其他人。

你可能会想在这里问一下,如果你没有得到答案的话:可能会有帮助:你有一对成对的训练集吗?如果你没有得到答案,你可能会想在这里问一下:也许有帮助:您是否有一套由两人组成的培训课程?非常有用的链接。HuggingFace的API似乎是一个很好的起点。非常有用的链接。HuggingFace的API似乎是一个很好的起点。感谢您的概述。这让我失望了
nlp_features = pipeline('feature-extraction')
output = nlp_features('the green tree was tall')
np.array(output).shape   # (Samples, Tokens, Vector Size)