29

我知道 ANN 输入必须被规范化、标准化等。撇开各种 ANN 的特性和模型不谈,我如何在 {0,1} 范围内或在 {-1} 范围内预处理 UTF-8 编码文本, 1} 在作为神经网络的输入之前?我一直在谷歌上搜索这个但找不到任何信息(我可能使用了错误的术语)。

  1. 那有意义吗?
  2. 这不是为神经网络预处理文本的方式吗?
  3. 有没有其他选择?

2013 年 11 月更新

我早就接受了皮特的正确答案。然而,我有严重的怀疑,主要是由于我最近对符号知识和 ANN 的研究。

Dario Floreano 和 Claudio Mattiussi在他们的书中解释说,通过使用分布式编码,这种处理确实是可能的。

实际上,如果您尝试使用 google 学者搜索,就会发现大量的神经科学文章和论文,这些文章和论文介绍了如何假设大脑使用分布式编码来编码符号知识。

Teuvo Kohonen在他的论文“自组织地图”中解释说:

有人可能认为,将神经适应定律应用于符号集(被视为一组矢量变量)可能会创建一个显示符号之间“逻辑距离”的地形图。然而,与连续数据相比,存在符号的不同性质的问题。对于后者,相似性总是以自然的方式出现,作为它们连续编码之间的度量差异。对于没有定义度量的离散符号项目(例如单词)不再适用。符号的本质与它的编码是分离的。

然而,Kohonen 确实设法处理了 SOM 中的符号信息!

此外,Alfred Ultsch 教授在他的论文“神经网络与符号知识处理的集成”中准确地处理了如何在人工神经网络中处理符号知识(例如文本)。Ultsch 提供以下处理符号知识的方法:神经近似推理、神经统一、内省和综合知识获取。尽管在谷歌学者或其他任何地方都找不到关于这方面的信息。

皮特在他的回答中关于语义是正确的。ANN 中的语义通常是不连贯的。然而,在参考之后,提供了研究人员如何使用 RBM 的见解,这些 RBM 被训练以识别不同单词输入的语义相似性,因此拥有语义应该不是不可能的,但如果需要语义,则需要分层方法或辅助 ANN .

使用子符号神经网络进行自然语言处理,Risto Miikkulainen,1997 年 在单词观察上训练受限玻尔兹曼机,GEDahl,Ryan.P.Adams,H.Rarochelle,2012 年

2021 年 1 月更新

NLP 和深度学习领域的研究在过去几年中出现了复苏,自从我提出这个问题以来。现在有机器学习模型可以解决我试图以多种不同方式实现的目标。

对于遇到此问题并想知道如何在深度学习或神经网络中预处理文本的任何人,这里有一些有用的主题,它们都不是学术性的,但很容易理解,它们应该可以帮助您开始解决类似的任务:

在我问这个问题的时候,RNN、CNN 和 VSM 即将开始使用,现在大多数深度学习框架都支持广泛的 NLP 支持。希望以上有所帮助。

4

5 回答 5

19

我将继续在这里总结我们的讨论作为答案。

您的目标是能够将文本合并到您的神经网络中。我们已经确定传统的人工神经网络并不适合分析文本。为什么会这样的基本解释是基于这样的想法,即 ANN 对通常是连续值范围的输入进行操作,并且输入的两个值的接近意味着它们的含义具有某种接近性。单词没有这种接近的概念,因此,对于作为 ANN 输入有意义的单词,没有真正的数字编码。

另一方面,一个可行的解决方案是使用更传统的语义分析,它可能会为主题列表生成情感范围,然后这些主题及其情感值可能会用作 ANN 的输入。

于 2013-02-21T16:57:11.277 回答
10

回应您的意见,不,您提出的方案不太合理。一个人工神经元的输出本质上代表一个连续的或至少一个二进制值。在巨大的离散枚举(如 UTF-8 字符)和由浮点值表示的连续范围之间进行映射是没有意义的。例如,当这些数字可以很容易地映射到换行符和字符“a”时,ANN 必然会表现得像 0.1243573 是 0.1243577 的一个非常好的近似值,这对于彼此来说根本不是很好的近似值。

坦率地说, “通用 unicode 字符串”没有合理的表示形式作为 ANN 的输入。一个合理的表示取决于你正在做什么的细节。这取决于您对以下问题的回答:

  • 您是否希望输入字符串中出现单词而不是字符块?您希望字符串中出现哪些单词?
  • 输入字符串的长度分布是多少?
  • 输入字符串的预期熵是多少?
  • 对于您期望字符串的外观,您是否有任何特定领域的知识?

最重要的是

  • 你想用 ANN做什么。不是你可以忽略的。

您可能有一个没有翻译的设置,实际上可以让您使用神经网络做您想做的事情。在你回答这些问题之前(你在上面的评论中绕过它们),不可能给出一个好的答案。

我可以给出一个示例答案,如果您碰巧对上述问题给出了某些答案,那将起作用。例如,如果您正在阅读具有任意长度但由空格分隔的小词汇表组成的字符串,那么我建议您使用一种翻译方案,其中您制作 N 个输入,一个用于词汇表中的每个单词,并使用递归神经网络通过将相应的输入设置为 1 并将所有其他输入设置为 0 来一次输入一个单词。

于 2013-02-20T10:07:00.553 回答
7

我认为将文本(在字符级别编码)输入到深度信念网络中,看看它可以发现语言的哪些属性会很有趣。

最近在神经网络语言建模方面做了很多工作(主要是单词级别,也有字符级别)

有关更多信息,请参阅这些链接

http://www.stanford.edu/group/pdplab/pdphandbook/handbookch8.html http://code.google.com/p/word2vec/

词向量是通过对大量维基百科文章等进行训练而编码的,并且已经能够获得语义和句法特征,这允许在它们之间定义“距离””

“最近表明,词向量捕获了许多语言规律,例如向量操作向量('king')-向量('man')+向量('woman')接近向量('queen')”

另请参阅 Ilya Sutskever 的这篇关于生成随机字符的出色研究论文,该论文在经过维基百科培训后展示了英语语言的特征。惊人的东西!

http://www.cs.toronto.edu/~ilya/pubs/2011/LANG-RNN.pdf http://www.cs.toronto.edu/~ilya/rnn.html(在线文本生成文本演示-非常凉爽的!)

于 2013-08-13T17:13:36.557 回答
2

目前尚不清楚您要做什么,但我想它似乎在某种意义上与人们所说的“自然语言”有关。有很多关于这方面的参考资料......我不是专家,但我知道例如 O'Reilly 有一些有趣的参考资料。

从 NN 的角度来看,有许多不同的 NN 模型。我认为您指的是最流行的一种称为多层感知器的具有一种反向传播算法的感知器,但是有很多关联内存模型可能更适合您的情况。关于这方面的一个很好的参考是 Simon Haykin 的书。

但是,如果我尝试做这样的事情,我会开始尝试理解字母、音节和单词的频率如何在英语中一起出现(?)。

我希望我有所帮助。正如我之前所说,我不是该领域的专家。

于 2013-02-20T20:49:12.780 回答
0

解决方案1:A = Alt(65) = 65 Bin = 01000001

解决方案 2:将单词添加到字典数据库并添加 id(int) 字段。将 id 字段转换为二进制。

在 NN 中使用字母或单词 id(二进制)

于 2017-08-16T23:43:30.570 回答