【问题标题】:How can you compare two lists in such a way that you find out how many times a word from one list is in the second list?你如何比较两个列表,从而找出一个列表中的单词在第二个列表中出现了多少次?
【发布时间】:2022-11-30 16:24:48
【问题描述】:

我有两个列表,一个包含人类选择的真实值,另一个包含提取值的列表。我想根据提取列表中包含多少真值来衡量管道的执行情况。例子:

extracted_value = ["value", "of", "words", "that", "were", "tracked"]
real_value = ["value", "words", "that"]

我需要一个描述的指标: 提取了 3 个实数值中的 3 个

对于多个文档: 提取了 10 个实际值中的 5 个 提取了 3 个实数值中的 2 个 提取了 9 个实际值中的 1 个

根据个人比较,我能否得到一个分数来描述提取的关键字在所有文档中的平均表现如何?

【问题讨论】:

    标签: python performance


    【解决方案1】:

    像这样简单的东西行得通吗?

    score = len([x for x in real_value if x in extracted_value])/len(extracted_value)
    print(score)
    >>> 0.5
    

    【讨论】:

    • 这很有帮助:我刚刚更改了列表:score = len([x for x in extracted_value if x in real_value])/len(real_value) print(score) 并且这有效。你知道如何对所有文档进行平均吗?
    • 你是如何为你的文档集存储这些数据的?示例中的一个仅适用于单个文档,对吗?然后你可以得到所有分数的总和并将它除以文档数量
    【解决方案2】:

    您要查找的指标是 recall。 @sfat 的解决方案适用于单个文档,然后您可以通过 summing 得分然后除以文档的 len 来获得多个文档的平均值。

    如需更高级的检索评分,请查看链接文章的 F-Score 部分。

    【讨论】:

      【解决方案3】:

      检查 extracted_value 和 real_value 之间共享了多少值。我相信你正在寻找你的模型的召回率,你可以使用集合操作,特别是 & (and) 除以你的基本事实 (real_values):

      recall = len(set(real_value) & set(extracted_value))/len(real_values)
      

      或者,如果您想要确切共享哪些特定值,您可以随时使用 len

      shared_vals = set(real_value) & set(extracted_value)
      

      如果你想用 shared_vals 计算召回率:

      recall = len(shared_vals)/len(real_value)
      

      【讨论】:

        猜你喜欢
        • 2022-12-03
        • 1970-01-01
        • 2022-10-03
        • 1970-01-01
        • 2021-12-09
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多