• 基于Python实现的自然语言处理高级专题


    自然语言处理高级专题

    本实验在 SemEval_2015_Task_31i数据集上使用规则提取特征并使用 SVM 和随机森林两种方法在提取特征的基础上进行分类。

    特征提取

    本实验参照ii文中的思路提取特征。

    在 A 任务中,每个 question-comment pair 有 100 维特征。其中关于问题(QBody 字段)与回答(CBody 字段)本身各有 25 维特征,见表 1,在提取这些特征之前先去掉了文中的所有链接,但没有去掉html 标签。question-comment pair 整体还有 50 个特征,见表 2。

    特征描述形式维数
    标签数(以<>数量中较少的估计)计数1
    最长单词长度计数1
    平均单词长度数值1
    单词数量计数1
    句子数量(以问号、句号、叹号总数估计)计数1
    平均每句单词数量数值1
    大写单词数量计数1
    命名实体数量计数1
    no 的数量计数1
    yes 的数量计数1
    thank, thanks 的数量计数1
    please 的数量计数1
    may, might, could, can, would, will 的数量计数1
    问号的数量计数1
    叹号的数量计数1
    名词、动词、代词、疑问词、外来词的数量计数5
    名词、动词、代词、疑问词、外来词的频率比率5

    表 1 问题和回答文本分别统计的特征

    特征描述形式维数
    问题和回答中的图数和链接数计数4
    回答是否是第一个或最后一个布尔2
    当前及前后回答的 USERID 是否和提问者相同布尔3
    问题是否为是否类问题布尔1
    问题类型(QCATEGORY)one-hot27
    回答的 title 是否问“Re:”+问题 title布尔1
    问题和回答相同的 uni|bi|tri gram 数计数3
    上数相对于问题长度和回答长度的比值比率6
    问题和回答的 uni|bi|tri gram 的 one-hot 向量余弦值数值3

    表 2 问题和回答联合统计的特征

    由于官网的评价脚本中,A 任务只考虑 Good、bad 和 Potential 三个类别,所以在标记标签时,尝试了两种标签标记方式:A-full 是标全 6 类的。而 A-sim 是只标记 3 类的。

    在 B 任务中使用的特征和 A 任务中相同,不过是以题为单位。故每道题的特征向量是 A-sim 标记下svm 训练结果中标记为 good 的选项的特征向量的均值。

    实验设置

    在具体实现时,使用的工具 libsvm2和 xgboost3。分词、词性标注和命名实体识别等使用 nltk4。

    简单调参后,两个任务均使用线性核 SVM,task-A 的两种标注的参数-c 均为 0.5,task-B 的参数-c为1。而在随机森林时,两个任务均使用 multi:softmax 作为目标函数,最大树深为 5,学习率 eta 为0.2,训练轮数为 50 轮。

    评价时,task-A 和官网上评价脚本相同,只考虑 3 类。task-A 和 task-B 的评价指标均为 macro-f1和accuracy。

    实验结果

    Task-A 在验证集和测试集上的实验结果如表 3 所示,Task-B 在验证集和测试集上的的实验结果如表4所示。

    macro-F1AccF1-GoodF1-Pot.F1-Bad
    A-full-svm-dev47.39%67.42%76.05%0.00%61.66%
    A-full-svm-test49.41%70.34%76.70%0.00%67.99%
    A-Sim-svm-dev48.46%69.36%76.60%0.00%68.49%
    A-Sim-svm-test50.56%72.77%77.86%0.00%73.42%
    A-full-rf-dev48.51%68.94%77.12%0.00%64.96%
    A-full-rf-test49.57%70.70%77.08%0.00%68.49%
    A-Sim-rf-dev48.77%69.85%77.40%0.00%68.79%
    A-Sim-rf-test50.24%72.27%77.16%0.00%73.17%

    表 3 Task-A 上的实验结果

    macro-F1AccF1-YesF1-UnsureF1-No
    B-svm-dev54.32%55.88%66.67%40.00%50.00%
    B-svm-test43.39%51.72%62.86%46.15%20.00%
    B-rf-dev52.77%55.88%68.75%45.45%42.86%
    B-rf-test57.50%68.97%82.35%58.82%28.57%

    表 4 Task-B 上的实验结果

    点分析

    由于本实验采用的机器学习方法并没有针对 macro-F1 做特殊地优化,在 Task-A 上,小类 Pot.的效果很差。导致了本实验 Accuracy 看起来还不错但 macro-F1 明显偏低。

    Xgboost 在 TaskB 上的效果莫名地好。不过可能也是由于 Task-B 的数据集较小导致的意外吧。

    但是网上下载的数据集的测试集规模和 SemEval-2015 评测报告中写的不一样。

    横向对比

    我们将我们的结果与一些相关文章进行对比,Task-A 与 Task-B 的结果分别如表 5、表 6 所示。其中,Hou’s 为参考文献[2]的方法,也是我这里主要参考的方法;Quan’s 为参考文献[3]iii的方法,也是当时评测比赛时 Task-A 效果最好的方法(他们当时没做 Task-B)。Belinkov’s 为参考文献[4]iv的方法,也是当时评测比赛时 Task-B 效果最好的方法。

    macro-F1AccF1-GoodF1-Pot.F1-Bad
    Task-A-SVM50.56%72.77%77.86%0.00%73.42%
    Task-A-RF50.24%72.27%77.16%0.00%73.17%
    Hou’s56.44%69.43%78.87%17.86%72.58%
    Quan’s57.29%72.52%78.96%14.36%78.24%
    Belinkov’s49.54%70.45%------------

    表 5 Task-A 上的横向比较

    macro-F1AccF1-YesF1-UnsureF1-No
    Task-B-SVM43.39%51.72%62.86%46.15%20.00%
    Task-B-RF57.50%68.97%82.35%58.82%28.57%
    Hou’s53.60%64.00%80.00%44.44%36.36%
    Belinkov’s63.70%72.00%------------

    表 6 Task-B 上的横向比较

    从上面的比较可以看出,我们的(SVM 与随机森林)方法在 Task-B 与 Task-A Accuracy 上超过了这两种方法选取特征时主要参考的工作,但是距离最好的工作还略有差距。

  • 相关阅读:
    文件怎么设置密码?一文带你看到文件加密的方法
    Firewall Analyzer防火墙管理
    Chrome出现STATUS_STACK_BUFFER_OVERRUN解决方法之一
    使用自定义数据训练 YOLOv10
    idea 2021.2.3版本中隐藏target和.iml文件问题的解决
    【EMC专题】EMC测试——辐射发射测试设备
    实时数据传输:Django 与 MQTT 的完美结合
    nodejs+vue杰和牧场管理系统的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计
    Vue3 从入门到放弃 (第二篇.创建第一个Web应用)
    MySQL触发器使用指南大全
  • 原文地址:https://blog.csdn.net/newlw/article/details/126930876