处理神经网络输入的文本字符串

时间:2013-02-09 00:16:08

标签: preprocessor neural-network textinput normalize standardized

据我所知,ANN输入必须标准化,标准化等。 抛开各种ANN的特性和模型,我怎样才能在{0,1}范围内或在范围{-1,1}之间预先处理UTF-8编码文本,然后再将其作为神经网络的输入? 我一直在谷歌搜索这个,但找不到任何信息(我可能使用了错误的术语)。

  1. 这有意义吗?
  2. 不是说神经网络如何预处理文本?
  3. 还有其他选择吗?
  4. 编辑2013年11月20日

    我一直认为Pete的答案是正确的。 但是,我有严重的疑虑,主要是由于我最近对符号知识和ANN的研究。

    Dario Floreano and Claudio Mattiussi在他们的书中解释说,使用分布式编码确实可以进行此类处理。

    事实上,如果你尝试谷歌学者搜索,那么存在大量的神经科学文章和论文,关于如何假设大脑使用分布式编码来编码符号知识。

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

      

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

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

    此外, Alfred Ultsch教授在他的论文“神经网络的整合与 符号知识处理“完全处理人工神经网络中如何处理符号知识(如文本).Ultsch提供以下处理符号知识的方法:神经近似推理,神经统一,自省和综合 知识获取。虽然谷歌学者或其他任何地方的人都可以找到很少的信息。

    皮特在他的回答中是关于语义的。 人工神经网络中的语义通常是断开的。然而,下面的参考,提供了洞察研究人员如何使用RBM,训练识别不同单词输入的语义相似性,因此它不应该是不可能有语义,但需要分层方法,或者如果需要语义,则需要辅助ANN

    Natural Language Processing With Subsymbolic Neural Networks, Risto Miikkulainen, 1997 Training Restricted Boltzmann Machines on Word Observations, G.E.Dahl, Ryan.P.Adams, H.Rarochelle, 2012

5 个答案:

答案 0 :(得分:18)

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

您的目标是将文本合并到神经网络中。我们已经确定传统的人工神经网络并不适合分析文本。对此原因的基本解释是基于以下观点:人工神经网络对输入进行操作,这些输入通常是连续的值范围,输入的两个值的接近度意味着它们意义上的某种接近。单词没有这种接近的概念,因此,对于作为ANN输入有意义的单词,没有真正的数字编码。

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

答案 1 :(得分:10)

回应你的意见,不,你提出的计划没有多大意义。由其性质输出的人造神经元表示连续或至少二进制值。在巨大的离散枚举(如UTF-8字符)和浮点值表示的连续范围之间进行映射是没有意义的。人工神经网络必然会像0.1243573一样非常接近0.1243577,这些数字很容易映射到换行符和字符“a”,例如,是每个人的好近似值其他根本

坦率地说,没有合理的“一般unicode字符串”表示作为ANN的输入。合理的表示取决于您正在做的事情的具体情况。这取决于您对以下问题的回答:

  • 您是否希望在输入字符串中显示单词而不是字符块?你希望在字符串中出现什么词?
  • 输入字符串的长度分布是什么?
  • 输入字符串的预期熵是多少?
  • 您对字符串的期望是什么有特定领域的知识吗?

最重要的是

  • 你想用ANN做什么。这是 您可以忽略的内容。

可能你可能有一个 no 翻译的设置,它实际上允许你你想要的神经网络。在你回答这些问题之前(你在上面的评论中绕过它们),就不可能给出一个好的答案。

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

答案 2 :(得分: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(在线文本生成文本演示 - 非常酷!)

答案 3 :(得分:2)

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

从NN的角度来看,有许多不同的NN模型。我认为你指的是最受欢迎的多层感知器,它采用了一种反向传播算法,但是有很多联想记忆模型可能更适合你的情况。关于这一点的一个很好的参考是Simon Haykin的书。

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

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

答案 4 :(得分:0)

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

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

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