Questions tagged «natural-language»

自然语言处理是一组来自语言学,人工智能,机器学习和统计的技术,旨在处理和理解人类语言。

2
SpaCy中的.similarity方法如何计算?
如果这是正确的堆栈站点,则不能确定,但​​是可以。 .similiarity方法如何工作? 哇,太棒了!它的tfidf模型可能更容易,但是只有一行代码的w2v? 在他的 关于spaCy和 razhribernik的10行教程中,向我们展示了可以在令牌,发送,词块和文档上运行的.similarity方法。 之后nlp = spacy.load('en'),doc = nlp(raw_text) 我们可以在令牌和块之间进行.likeness查询。但是,此.similarity方法在后台计算了什么? SpaCy已经非常简单.vector,可以根据GloVe模型的训练来计算w2v向量(a .tfidf或.fasttextmethod会有多酷?)。 模型是简单地计算这两个w2v,.vector,向量之间的余弦相似度还是比较其他矩阵?具体细节在文档中不清楚; 任何帮助表示赞赏!


2
在使用截断的反向传播时捕获初始模式(RNN / LSTM)
假设我使用RNN / LSTM进行情感分析,这是一种多对一的方法(请参阅此博客)。通过截断时间反向传播(BPTT)对网络进行训练,在该网络中,像往常一样仅在最后30个步骤中展开网络。 就我而言,我要分类的每个文本节都比展开的30个步骤(〜100个单词)长得多。根据我的知识,BPTT仅对单个文本部分运行一次,这是当BPTT遍历整个文本部分并计算了二进制分类目标,它将与损失函数进行比较以发现错误。yyy 这样就永远不会针对每个文本部分的第一个单词计算梯度。然后,RNN / LSTM如何仍然调整其权重以捕获仅在前几个单词内出现的特定模式?例如,假设所有标记为句子均以“我爱这个” 开头,所有标记为句子均以“我讨厌这个”开头。当RNN / LSTM到达100步长序列的末尾时,它仅在最后30步才展开时,将如何捕获呢?positivepositivepositivenegativenegativenegative

2
为什么在文字语言识别中使用n-gram代替单词?
在两个流行的语言识别库中,C ++的紧凑语言检测器2和Java的语言检测器都使用了(基于字符的)n-gram提取文本特征。为什么不使用单词袋(单个单词/词典)?单词袋和n-gram的优缺点是什么? 另外,n-grams模型在文本分类中还有哪些其他用途? 哎呀 似乎这里有一个类似的问题: 关于使用bigram(N-gram)模型为文本文档构建特征向量 但是有人可以给出更全面的答案吗?在识别语言的情况下哪个更好? (希望我能正确理解n-gram和词袋的含义,哈哈,如果不能,请帮助我。)

2
如何将神经网络应用于多标签分类问题?
描述: 让问题域为文档分类,其中存在一组特征向量,每个特征向量属于一个或多个类。例如,文档doc_1可能属于Sports和English类别。 题: 使用神经网络进行分类,特征向量的标签是什么?它是构成所有类的向量,以便对不相关的类赋予0值,对相关的类赋予1值吗?因此,如果类标签的列表为[Sports, News, Action, English, Japanese],那么对于文档doc_1,标签将为[1, 0, 0, 1, 0]?

3
Word2Vec的跳过语法模型如何生成输出向量?
我在理解Word2Vec算法的跳过语法模型时遇到问题。 在连续词袋中,很容易看到上下文词如何在神经网络中“拟合”,因为您基本上是在将每个一次性编码表示形式与输入矩阵W相乘后对它们进行平均。 但是,在skip-gram的情况下,您只能通过将一热点编码与输入矩阵相乘来获得输入词向量,然后假设通过将上下文词乘以C(=窗口大小)来表示上下文词输入矢量表示,输出矩阵为W'。 我的意思是说,词汇量为,编码为,输入矩阵,作为输出矩阵。给定单词具有一词热编码和上下文单词和(具有热代表和),如果将乘以输入矩阵,则得到,现在如何从中生成得分矢量?Ñ w ^ ∈ [R V × Ñ W¯¯ ' ∈ [R Ñ × V瓦特我X 我瓦特Ĵ 瓦特ħ X Ĵ X ħ X 我 W¯¯ ħ:= X Ť 我 W¯¯ = w ^ (我,⋅ ) ∈ [R Ñ ÇVVVNNNW∈RV×NW∈RV×NW \in \mathbb{R}^{V\times N}W′∈RN×VW′∈RN×VW' \in \mathbb{R}^{N\times V}wiwiw_ixixix_iwjwjw_jwhwhw_hxjxjx_jxhxhx_hxixix_iWWWh:=xTiW=W(i,⋅)∈RNh:=xiTW=W(i,⋅)∈RN{\bf h} := x_i^TW …

1
从性能上考虑词嵌入算法
我试图将大约6000万个短语嵌入向量空间,然后计算它们之间的余弦相似度。我一直在使用sklearn's CountVectorizer和一个自定义的生成标记器的函数,该函数会产生字母和二字组。事实证明,要获得有意义的表示,我必须允许大量列,行数成线性。这会导致矩阵稀疏,从而导致性能下降。如果只有大约10,000列,那还不错,我认为这对于单词嵌入来说是相当合理的。 我正在考虑尝试使用Google,word2vec因为我敢肯定它会产生低得多的尺寸和更密集的嵌入。但是在此之前,还有其他嵌入值得一看吗?关键要求是能够扩展大约6000万个短语(行)。 我对词嵌入领域还很陌生,因此任何建议都将对您有所帮助。 我还应该补充一点,我已经在使用奇异值分解来提高性能。

1
期望最大化澄清
我发现有关EM算法的非常有用的教程。 该示例和教程中的图片简直太棒了。 有关计算概率的相关问题,期望最大化如何工作? 关于如何将教程中描述的理论与示例联系起来,我还有另一个问题。 在E步中,EM选择一个函数,该函数所有位置下限,并且为此。gtgtg_tlogP(x;Θ)log⁡P(x;Θ)\log P(x;\Theta)gt(Θ^(t))=logP(x;Θ^(t))gt(Θ^(t))=log⁡P(x;Θ^(t))g_t( \hat{\Theta}^{(t)}) = \log P(x; \hat{\Theta}^{(t)}) 因此,在我们的示例中,看起来像每次迭代都应该有所不同。gtgtg_t 另外,在示例中和然后将它们应用于数据,我们得出和。对我来说,这看起来很不直观。我们有一些先前的假设,将其应用于数据并获得新的假设,因此数据以某种方式改变了这些假设。我不明白为什么不等于。Θ^(0)A=0.6Θ^A(0)=0.6\hat{\Theta}_A^{(0)} = 0.6Θ^(0)B=0.5Θ^B(0)=0.5\hat{\Theta}_B^{(0)} = 0.5Θ^(1)A=0.71Θ^A(1)=0.71\hat{\Theta}_A^{(1)} = 0.71Θ^(1)B=0.58Θ^B(1)=0.58\hat{\Theta}_B^{(1)} = 0.58Θ^(0)Θ^(0)\hat{\Theta}^{(0)}Θ^(1)Θ^(1)\hat{\Theta}^{(1)} 此外,当您看到本教程的补充说明1时,还会出现更多问题。例如,在我们的案例中,是什么。我不清楚,为什么当时,不等式变得很紧Q(z)Q(z)Q(z)Q(z)=P(z|x;Θ)Q(z)=P(z|x;Θ)Q(z)=P(z|x;\Theta) 谢谢。

1
在SVD之前在单词共生矩阵上应用逐点互信息的利弊是什么?
生成单词嵌入的一种方法如下(mirror): 获得一个语料库,例如“我喜欢飞行。我喜欢NLP。我喜欢深度学习。” 从中建立单词共现矩阵: 在上执行SVD ,并保留U 的前列。XXXķķk 子矩阵每一行都是该行表示的单词的单词嵌入(行1 =“ I”,行2 =“ like”,…)。ü1 : | V| ,1:kü1个:|V|,1个:ķU_{1:|V|,1:k} 在第2步和第3步之间,有时会应用逐点相互信息(例如A. Herbelot和EM Vecchi。2015。构建共享世界:映射分布到模型理论语义空间。)在2015年自然语言处理经验方法会议上的发言(葡萄牙里斯本)。 在SVD之前在单词共生矩阵上应用逐点互信息的利弊是什么?

2
关于连续词袋的问题
我在理解这句话时遇到了麻烦: 首先提出的体系结构类似于前馈NNLM,其中去除了非线性隐藏层,并为所有单词共享了投影层(而不仅仅是投影矩阵)。因此,所有单词都投影到同一位置(对它们的向量进行平均)。 什么是投影层与投影矩阵?说所有单词都投射到相同位置意味着什么?为什么这意味着它们的向量是平均的? 该句子是向量空间中单词表示的有效估计的第3.1节的第一部分(Mikolov等,2013)。

2
使用LSTM处理语言建模任务中的未知单词
对于自然语言处理(NLP)任务,通常使用word2vec向量作为单词的嵌入。但是,可能有很多未知单词未被word2vec向量捕获,这仅仅是因为这些单词在训练数据中的出现频率不够高(许多实现在将单词添加到词汇表之前使用最少的计数)。尤其是来自Twitter的文本,尤其是单词拼写错误的情况。 在对NLP任务进行建模(例如使用长短期(LSTM)网络进行情感预测)时,如何处理这些未知单词?我看到两个选择: 在word2vec词典中添加“未知单词”标记。 删除这些未知单词,以使LSTM甚至不知道单词在句子中。 处理这些单词的首选方式是什么?

5
如何测量词频数据中的离散度?
如何量化字数向量中的离散量?我正在寻找一种统计数据,该统计数据对于文档A而言会很高,因为它包含许多不经常出现的单词,而对于文档B而言却很低,因为它包含一个经常出现的单词(或几个单词)。 更一般而言,如何测量名义数据中的离散或“扩散”? 文本分析社区中是否有标准的方法?

1
了解TF-IDF对数中对数的使用
我正在阅读: https://zh.wikipedia.org/wiki/Tf%E2%80%93idf#Definition 但是我似乎无法确切地理解为什么以这种方式构造公式。 我的理解: iDF应该在某种程度上衡量术语S在每个文档中出现的频率,并随着术语S出现频率的增加而降低其价值。 从这个角度来看 我d ˚F(S)= # 文献# 含S-文献一世dF(小号)=# 文件数量# 包含S的文档 iDF(S) = \frac{\# \text{ of Documents}}{\# \text{ of Documents containing S}} 此外,术语“频率”可以正确地描述为 Ť ˚F(S,d )= #在文件d S的出现次数的 #文档D中任何字符串Q的最大出现次数 ŤF(小号,d)=# D中S的出现# 文档D中任何字符串Q的最大出现次数 tf(S,D) = \frac{\# \ \text{of Occurrences of S in document D}}{\# \ \text{maximum number of occurrences …

3
关于使用bigram(N-gram)模型构建文本文档的特征向量
用于文本挖掘的特征构造的传统方法是词袋方法,并且可以使用tf-idf进行增强,以建立表征给定文本文档的特征向量。目前,我正在尝试使用Bi-gram语言模型或(N-gram)来构建特征向量,但还不太清楚该怎么做?我们是否可以仅遵循单词袋的方法,即以二元语法代替单词来计算频率计数,并使用tf-idf加权方案对其进行增强?

2
如何按常见主题对字符串进行分组?
我试图将例如关于编程的字符串与其他关于编程的字符串,关于物理的字符串与关于物理的其他字符串等进行分组,以涵盖广泛的主题。尽管问题在语言学方面令人眼花aspect乱,但我仍希望使用编程/软件来实际执行此操作。 总结:给定大量字符串,我该如何按语义主题对它们进行分组? 特定的应用程序:我有大约200,000个琐事问题,我想将其归类为常见的组别(汽车,计算机,政治,加拿大,食品,巴拉克·奥巴马(Barack Obama)等)。 我研究的内容: Wikipedia 列出了自然语言处理工具包(假设我要尝试的工作实际上是NLP),因此我查看了一些内容,但似乎没有一个能满足我的需求。 注意:已经指出,这样做需要更多的知识(例如,保时捷是汽车,C ++是编程语言)。当时我认为需要训练数据,但是如果我只有问题和答案的列表,那么如何生成训练数据?然后如何使用训练数据? 更多说明:如果我的问与答帮助的当前格式(尽管看起来像JSON,但基本上是原始文本文件): // row 1: is metadata // row 2: is a very specific kind of "category" // row 3: is the question // row 4: is the answer { 15343 A MUSICAL PASTICHE Of classical music's "three B's", he was the …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.