在作为向量的单词的传统"一热"表示中,您具有与词汇的基数相同维度的向量.为了减少维度,通常会删除停用词,以及应用词干,词形等,以规范您要执行某些NLP任务的功能.
我无法理解是否/如何预处理要嵌入的文本(例如word2vec).我的目标是使用这些单词嵌入作为NN的特征,将文本分类为主题A,而不是主题A,然后在主题A的文档(使用第二个NN)上对它们执行事件提取.
我的第一直觉是预处理删除停用词,词典化词干等等.但是当我了解NN时我意识到应用于自然语言时,CBOW和skip-gram模型实际上需要整个词集存在 - 能够从上下文预测一个单词,需要知道实际的上下文,而不是规范化后的上下文的简化形式......对吗?).POS标签的实际顺序似乎是人类对词语预测的关键.
我在网上找到了一些指导,但我仍然很想知道这里的社区是怎么想的:
我的想法:
最好删除标点符号(但例如在西班牙语中不删除重音符号,因为它确实传达了上下文信息),将书写数字更改为数字,不要小写所有内容(对于实体提取有用),没有词干,没有词形变化.
这听起来不错吗?
我正在尝试处理一个月的网站流量,它存储在一个S3存储桶中作为json(每行一个json对象/网站流量点击).数据量足够大,我不能要求Spark推断架构(OOM错误).如果我指定架构,它显然很好.但是,问题是每个json对象中包含的字段不同,所以即使我使用一天的流量构建模式,每月模式也会不同(更多字段),因此我的Spark作业失败.
所以我很想知道别人如何处理这个问题.我可以使用传统的RDD mapreduce作业来提取我感兴趣的字段,导出然后将所有内容加载到数据帧中.但这很慢,看起来有点像弄巧成拙.
谢谢.
我无法准确理解 LSTM 单元的范围——它如何映射到网络层。来自格雷夫斯 (2014):
在我看来,在单层网络中,layer = lstm 单元。这实际上如何在多层 rnn 中工作?
单元格的输出是h_t,没有表示特定层的超级索引。等式也是一样。每个单元格是否跨越单个层?或者每个单元格是否在每个时间步跨越整个三个节点?
RDD非常有用,因为它们允许用户在"行"级别(或json单个对象等)处理数据,而无需将所有数据加载到内存中.驱动程序计算出如何将分布式数据(或指向它的指针)分发到worker中,并且每个分区都按照行/行/对象愉快地执行代码.然后,无需在驱动程序中收集数据,我可以将每个分区的结果保存到单独的文本文件中.
DataFrames.这是如何运作的?我怀疑它不一样,因为我可以用一个使用RDD的小型8节点集群处理一个月的服务器日志,但是一旦我尝试将分布式数据加载sql_context(spark_context).sql.read.json(s3path)到DataFrame中它就会吐出各种各样的内存错误和工作中止.数据集与RDD正确执行的数据集完全相同,相同的集群,相同的时间段.
RDD和DataFrames处理内存加载的方式有什么不同,从某种意义上说,这可能解释了我的结果?请帮助我理解可能推动这些结果的RDD和DataFRames之间的差异.谢谢.
我需要使用三个非常简单的约束将索引列添加到数据框:
从0开始
是顺序的
确定性的
我确定我遗漏了一些明显的东西,因为对于这样一个简单的任务,或者使用非顺序,不确定性越来越单调的id,我发现的示例看起来非常复杂。我不想使用index压缩,然后不得不将以前分开的列现在分开放在单列中,因为我的数据帧在TB中,这似乎是不必要的。我不需要按任何分区,也不需要按任何顺序进行分区,而我所找到的示例可以做到这一点(使用窗口函数和row_number)。我需要的只是一个简单的0到df.count整数序列。我在这里想念什么?