python 判断某一句话是否在文本里_如何用自然语言处理判断一句话是否是问句?...

判断一个句子是否是问句,是一个二分类问题。

如何具体来做这么一个分类器呢?我们先看看传统词袋法怎么操作。

1. 构造标注数据集。

首要问题是构造分类所需要的标注数据。

标注数据的获得非常简单,拿到一批标点使用比较规范的文档就行,比如学生作文、官方新闻稿。把所有文章分句,拿到每个句子的最后一个标点符号,如果是问号,就是正样本,否则是负样本。

2. 分词,去除停用词。

对每个样本分词,使用词作为特征,为了提升效果,还可以使用词级别的ngram特征。你可能需要去掉“的”“你”“这”等停用词,但是注意一定不要把语气词(“吧”、“吗”)也去掉。

3. 特征选择。

使用传统的特征选择方法(DF、信息增益、卡方统计等),筛选出跟类别最相关的N个词。

4. 特征权重计算。

使用TFIDF作为特征权重,将每句话表示为一个N维向量。

5. 选择分类器。

选择你想使用的分类器,常见的LR、SVM、决策树都行。

6. 将数据划分训练集,测试集,在训练集上训练模型,在测试集上评估模型。

不断调节模型参数,使得模型在测试集上F1最高。

7. 对于一个新的输入句子,使用你训练的模型预测。

但是上面模型存在一些缺点:

1. 词袋法丢失语序信息。比如“吧”出现在句子尾部跟首部,可能结果完全不一样。

2. 复杂的句子需要结合更多的上下文来判断。这个楼里同学提到过。

为了克服这些缺点,可以尝试用深度学习,卷积网络捕捉语序,也可以把前后几个句子向量和当前句子向量拼接起来。

实际上,配几个规则更为直接有效。

比如,句子最后一个字是“吗”基本上是就是问句了,最后一个字是“呢”就不是疑问句。

常见的问句分为:疑问句、反问句、设问句等。每种问句都有自己常见的句式。比如“是…,还是…”,“能…么”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值