问题标签 [machine-learning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python 中 Twitter 的情感分析
我正在寻找文本情感分析(http://en.wikipedia.org/wiki/Sentiment_analysis)的开源实现,最好是在python中。有人熟悉我可以使用的这种开源实现吗?
我正在编写一个应用程序,它在 twitter 上搜索一些搜索词,比如“youtube”,并计算“快乐”推文与“悲伤”推文。我正在使用 Google 的 appengine,所以它在 python 中。我希望能够对来自 twitter 的返回搜索结果进行分类,并且我想在 python 中做到这一点。到目前为止,我还没有找到这样的情绪分析器,特别是在 python 中。你熟悉我可以使用的这种开源实现吗?最好这已经在python中,但如果没有,希望我可以将它翻译成python。
请注意,我正在分析的文本非常短,它们是推文。因此,理想情况下,该分类器针对此类短文本进行了优化。
顺便说一句,twitter 确实支持搜索中的 ":)" 和 ":(" 运算符,它们的目的就是为了做到这一点,但不幸的是,它们提供的分类并不是那么好,所以我想我可以自己尝试一下.
谢谢!
machine-learning - 自然语言处理中的二值化
二值化是将实体的彩色特征转换为数字向量(通常是二进制向量)的行为,以便为分类器算法提供良好的示例。
如果我们在哪里对句子“The cat ate the dog”进行二值化,我们可以首先为每个单词分配一个 ID(例如 cat-1、ate-2、the-3、dog-4),然后简单地将单词替换为它的 ID 给出了向量 <3,1,2,3,4>。
给定这些 ID,我们还可以通过为每个单词提供四个可能的槽位并将与特定单词对应的槽位设置为 1 来创建二进制向量,从而使向量 <0,0,1,0,1,0,0,0 ,0,1,0,0,0,0,0,1>。据我所知,后一种方法通常被称为词袋法。
现在我的问题是,在描述自然语言处理的一般特征,特别是基于转换的依赖解析(使用 Nivres 算法)时,最好的二值化方法是什么?
在这种情况下,我们不想对整个句子进行编码,而是要对解析的当前状态进行编码,例如堆栈上的顶部单词和输入队列中的第一个单词。由于顺序是高度相关的,这排除了词袋方法。
用best,我指的是使数据对分类器最易理解的方法,而不会占用不必要的内存。例如,我不希望一个单词 bigram 对 20000 个唯一单词使用 4 亿个特征,如果实际上只有 2% 的 bigrams 存在的话。
由于答案也取决于特定的分类器,我最感兴趣的是最大熵模型(liblinear)、支持向量机(libsvm)和感知器,但也欢迎适用于其他模型的答案。
artificial-intelligence - 进化算法和神经网络是否在同一个领域中使用?
我试图了解各类机器学习算法之间的区别。
我知道进化算法的实现与神经网络的实现有很大不同。
然而,它们似乎都倾向于从一组潜在嘈杂的训练/历史数据中确定输入和输出之间的相关性。
从定性的角度来看,与进化算法相比,是否存在更适合神经网络目标的问题域?
我浏览了一些建议以互补方式使用它们的文章。有没有一个像样的用例示例?
machine-learning - 机器学习挑战:学习英语发音
假设您要采用如下所示的 CMU 语音数据集输入:
(单词在左边,右边是一系列音素,关键在这里)
您想将其用作机器学习系统的训练数据,该系统将接受新单词并猜测它们在英语中的发音方式。
至少对我来说并不是那么明显,因为没有固定的字母标记大小可以映射到音素。我有一种感觉,与马尔可夫链有关的事情可能是正确的方法。
你会怎么做?
language-agnostic - 进度条等的实际时间估计
我知道我不是唯一一个不喜欢在软件中给出不切实际估计的进度条或时间估计的人。最好的例子是安装人员在 10 秒内从 0% 跳到 90%,然后花一个小时完成最后的 10%。
大多数时候,程序员只是估计完成任务的步骤,然后将当前步骤/总步骤显示为百分比,而忽略了每个步骤可能需要不同时间才能完成的事实。例如,如果您将行插入数据库,则插入时间会随着插入行数的增加而增加(简单示例),或者复制文件的时间不仅取决于文件的大小,还取决于文件的位置。磁盘以及它的碎片程度。
今天,我问自己是否有人已经尝试对此进行建模,并且可能创建了一个带有可配置的鲁棒估计器的库。我知道很难给出可靠的估计,因为外部因素(网络连接、用户运行其他程序等)发挥了作用。
也许还有一种解决方案可以使用分析来设置更好的估计器,或者可以使用机器学习方法。
有人知道这个问题的高级解决方案吗?
与此相关,我发现重新思考进度条的文章非常有趣。它展示了进度条如何改变对时间的感知,以及您如何使用这些见解来创建似乎更快的进度条。
编辑:我可以想办法如何手动调整时间估计,即使使用“估计器库”,我也必须微调算法。但我认为这个问题可以用统计工具来解决。当然,估算器会在此过程中收集数据,以便为后续步骤创建更好的估算。
我现在要做的是取上一步所花费的平均时间(按类型分组的步骤并按例如文件大小、事务大小进行标准化)并将这个平均值作为下一步的估计(再次:计算不同的类型和尺寸)。
现在,我知道有更好的统计工具来创建估算器,我想知道是否有人将这些工具应用于这个问题。
machine-learning - 智能代码完成?有人工智能通过学习编写代码吗?
我问这个问题是因为我知道这里有很多读得很好的 CS 类型可以给出明确的答案。
我想知道这样的人工智能是否存在(或正在研究/开发),它通过自己生成和编译代码来编写程序,然后通过从以前的迭代中学习来进步。我说的是努力让我们这些程序员过时。我正在想象通过反复试验来学习编程语言中哪些有效,哪些无效的东西。
我知道这听起来像是天方夜谭,所以我想知道已经做了什么,如果有的话。
当然,即使是人类程序员也需要输入和规范,所以这样的实验必须有仔细定义的参数。就像人工智能要探索不同的计时功能一样,这方面必须明确定义。
但是有了一个复杂的学习人工智能,我很想知道它会产生什么。
我知道有很多人类品质是计算机无法复制的,比如我们的判断、品味和偏见。但是我的想象力喜欢这样的想法:一个程序经过一天的思考后会吐出一个网站,让我看看它想出了什么,即使如此,我仍然经常认为它是垃圾;但也许每天一次,我可能会给它反馈并帮助它学习。
这种想法的另一个途径是提供一个高级描述,如“菜单式网站”或“图像工具”,它会生成足够深度的代码,作为代码完成模块,然后我可以在细节。但我想这可以设想为一种非智能的静态分层代码完成方案。
这个怎么样?
twitter - 有哪些方法可以让大量数据变得有趣?(即 Twitter、del.icio.us 等 API)
Twitter、谷歌、亚马逊、del.icio.us 等都为您提供大量数据供您使用,全部免费。通过 Project Gutenberg 等计划还可以获得大量文本数据。而这似乎只是冰山一角。
我一直想知道你怎么能用这些数据来取乐。我是 IT 一年级的学生,所以我对统计、机器学习、协同过滤等一无所知。Toby Segaran 的《编程集体智能》一书激起了我对这个领域的兴趣,现在我想深入了解一下你可以用数据做什么。我不知道从哪里开始。有任何想法吗?
我也一直在思考是否应该去买像《人工智能编程范式》这样的东西。穿越城市值得吗?
machine-learning - 纠正收集数据中的已知偏差
好的,所以这里有一个类似于我的问题的问题(我将在下面详细说明真正的问题,但我认为这个类比会更容易理解)。
我有一个奇怪的双面硬币,每 1,001 次投掷中只有 1 次正面(随机)出现(其余为反面)。换句话说,每看到 1,000 个尾巴,就会有 1 个正面。
我有一种特殊的疾病,每看到 1,000 个尾巴,我只注意到 1 个,但我注意到每个头,所以在我看来,注意到头或尾的概率是 0.5。当然,我知道这种疾病及其影响,所以我可以弥补它。
现在有人给了我一枚新硬币,我注意到注意到正面的概率现在是 0.6。鉴于我的疾病没有改变(我仍然只注意到每 1,000 个尾巴中有 1 个),我如何计算这枚新硬币产生的实际正面与反面的比率?
好的,那么真正的问题是什么?好吧,我有一堆数据,包括输入和输出,分别是 1 和 0。我想教一个有监督的机器学习算法来预测给定输入的预期输出(0到1之间的浮点数)。问题是 1 非常罕见,这会破坏内部数学,因为它非常容易受到舍入误差的影响——即使是高精度浮点数学。
因此,我通过随机省略大部分 0 训练样本来对数据进行归一化,以使 1 和 0 的比率看起来大致相等。当然,这意味着现在机器学习算法的输出不再是预测概率,即。它现在将预测 0.5,而不是按应有的预测 0.001。
我需要一种方法将机器学习算法的输出转换回原始训练集中的概率。
作者注(2015-10-07):后来发现这种技术俗称“下采样”