我需要一个正则表达式来检测文本中的问题。
示例输入:
请告诉我如何做到这一点......或者如何使它正确!等等....
我需要输出:
- 这该怎么做
- 如何使它正确
现在我使用这个:
(?<q>(how to|how match|how many).*)(\s|\.|;|!|\?|( \-)|(\- )|?|:|…|_|\||@|~|…|–|—|¯|»|•|?|{|}|\(|\)|\\|\]|\[|>|<|?|'|""|`|$)但不起作用
我只需要如何提问
您尝试完成的任务属于与正则表达式适用的类别不同的类别。
要解决从文本中提取任意问题的问题,您需要的不仅仅是几个好的正则表达式。您应该开始寻找一个好的自然语言处理工具包。也许首先做一些词性标记。然后,从那里你需要做一些语法和句子解析,然后继续尝试回答这个问题:“这是一个句子是一个问题吗?” 通过检查您的 NLP 管道将识别的每个句子。
有了这些知识,您至少应该明白您想要完成的任务相当困难,虽然并非不可能,但需要大量微调才能获得良好的性能(通常用准确度和精确度指标来衡量)。你很可能不会在任何一个方面接近 100%,但你应该能够通过一个好的 PoS 标记器和一个好的句子解析器获得不错的结果。
编辑
根据您最近对该问题的编辑,您可能能够通过 RegEx 和手写规则获得一些基本的覆盖,但您仍然无法区分许多更复杂的情况。对于更通用的解决方案,自然语言处理工具包路线仍然是首选。
不要花太多时间试图想出一个灵丹妙药正则表达式来匹配自然语言。自然语言不是常规的- 所以它不会起作用!可以使用正则表达式来识别一些关键字,但除此之外,您最好使用简单的手写规则,并借助良好的自然语言管道进行标记。
更新
如果您真的很认真地对待这项任务,请以sharpnlp.codeplex.com作为起点。如果您不需要使用 C#,就会想到其他 NLP 工具包,其中NLTK是一种流行的工具包。第二步,为自己准备一本关于 NLP 的介绍性书籍。这个主题很广泛,真的很酷。我从中学到了很多东西的一本好书是:Jurafski 和 Martin 的Speech and Language Processing。
最后,这是我至少要做的事情:
. , ; ? !)祝你好运!
| 归档时间: |
|
| 查看次数: |
1296 次 |
| 最近记录: |