我有几千个不同长度的句子。这些陈述有多种形式,从3个字符的回复到4000个字符的回复以及大量的代码片段。代码段可以是任何语言。
如何识别问题(疑问句)并且没有代码段?评论不需要问题表格或严格的结构形式。
该应用程序基于rails 3上的ruby构建
一些例句:
1:如何解决分段错误? #valid
2:您必须使用BigInteger #invalid
3:删除运行时错误的一些提示#invalid
4 ::失望:失望:好的#invalid(包含表情符号)
5:这个问题属于哪个类别?图论? #valid
答案 0 :(得分:1)
这是text classification problem的一个例子,通常通过生成一些特征并将机器学习分类算法应用于它们来解决。
对于您的特定情况,问题检测是一个很好的研究领域。最简单的方法之一是使用正则表达式的启发式方法
以下解决方案取自this paper:
如果句子满足任何一个句子,则会将其检测为问题 以下内容:•以问号结尾,而不是URL。 •它 包含一个以符合疑问词的单词开头的短语 问题模式。这是5W-1H问题词的概括。 例如,第二句“当你有空时,你可以给我 一个电话“是一个强烈的指示,该句子是一个问题。 •它 适合不在疑问中的常见问题模式 形成。例如,“让我知道你何时会自由”就是这样 问题
还介绍了一个更复杂的解决方案,你可以找到他们提到谷歌搜索“问题检测算法”的论文
对于代码片段检测,现有的解决方案可以检测编程语言,如评论中所述。一个例子是http://www.rubyinside.com/sourceclassifier-identifying-programming-languages-quickly-1431.html
它们可能适用于检测特定样本是否为代码。或者,您可以使用现有libraries
之一训练简单的朴素贝叶斯分类器答案 1 :(得分:0)
文本分类是这样做的一种方式,但为此你需要大量的样本数据来训练你的模型,以便能够准确地检测你的模式。
您还可以解析这些句子以获得词性(POS),然后轻松查找诸如谁,哪些,如何,何时等来检测问题的词语。
Stanford NLP有一个Ruby库,提供可以使用的POS标记器。