HiP*_*dBi 2 python information-retrieval information-extraction
我写了一个程序来进行信息检索和提取。用户在搜索栏中输入查询,程序可以显示相关的txt结果,如相关句子和由该句子组成的文章。
我做了一些关于如何评估结果的研究。我可能需要计算精度、召回率、AP、MAP....
但是,我对此很陌生。如何计算结果。由于我的数据集没有标记并且我没有进行分类。我使用的数据集是来自 BBC 新闻的文章。有 200 篇文章。我把它命名为 001.txt, 002.txt ...... 200.txt
如果您对如何在 python 中进行评估有任何想法,那就太好了。谢谢。
由于您是新手,我将简要介绍如何在信息检索系统中计算精度、召回率、fscore、AP 和 MAP。
准确率和召回率
精确度量“在我们检索到的所有相关文档中,有多少是实际相关的?”。
Precision = No. of relevant documents retrieved / No. of total documents retrieved
Run Code Online (Sandbox Code Playgroud)
召回措施“在所有实际相关文件中,我们检索到多少相关文件?”。
Recall = No. of relevant documents retrieved / No. of total relevant documents
Run Code Online (Sandbox Code Playgroud)
假设,当将查询“q”提交给具有与查询“q”相关的 100 个文档的信息检索系统(例如,搜索引擎)时,系统从 600 个文档的总集合中检索 68 个文档。在检索到的 68 份文件中,有 40 份文件是相关的。所以,在这种情况下:
Precision = 40 / 68 = 58.8% 和 Recall = 40 / 100 = 40%
F-Score / F-measure 是精度和召回率的加权调和平均值。传统的 F-measure 或平衡 F-score 是:
F-Score = 2 * Precision * Recall / Precision + Recall
Run Code Online (Sandbox Code Playgroud)
平均精度
你可以这样想:你输入一些东西Google,它会显示 10 个结果。如果所有这些都相关,那可能是最好的。如果只有一些是相关的,比如其中的五个,那么最好先显示相关的。如果前五个无关紧要,而好的只从第六个开始,那会很糟糕,不是吗?AP 分数反映了这一点。
下面举个例子:
两个排名的AvgPrec:
排名#1: (1.0 + 0.67 + 0.75 + 0.8 + 0.83 + 0.6) / 6 = 0.78
排名#2: (0.5 + 0.4 + 0.5 + 0.57 + 0.56 + 0.6) / 6 = 0.52
平均平均精度 (MAP)
MAP 是多个查询/排名的平均精度的平均值。举个例子来说明。
两个查询的平均精度:
对于查询 1, AvgPrec: (1.0+0.67+0.5+0.44+0.5) / 5 = 0.62
对于查询 2, AvgPrec: (0.5+0.4+0.43) / 3 = 0.44
所以,MAP = (0.62 + 0.44) / 2 = 0.53
有时,人们使用precision@k,recall@k作为检索系统的性能度量。做实验,可以使用著名的AOL Search Query Logs数据集,搭建一个基于检索的系统(你只需要另外一个检索功能),然后进行实验。我给出了一个文档排名功能的例子。
文档排序/检索功能
Okapi BM25(BM 代表最佳匹配)是搜索引擎使用的一种排名函数,用于根据匹配文档与给定搜索查询的相关性对其进行排名。它基于概率检索框架。BM25 是一种词袋检索功能,它根据出现在每个文档中的查询词对一组文档进行排序,而不管文档中查询词之间的相互关系(例如,它们的相对接近度)。有关更多详细信息,请参阅维基百科页面。
小智 0
评估有两个要点。第一个是测试资源,其中包含特定查询的文档排名或其相关性标签(相关或不相关),这是通过实验(例如用户点击等)进行的,并且主要在运行 IR 系统时使用),或通过众包制作。评估的第二个重要部分是使用哪个公式通过测试集来评估 IR 系统。因此,根据您所说的,如果您没有标记的测试集合,则无法评估您的系统。
| 归档时间: |
|
| 查看次数: |
5166 次 |
| 最近记录: |