代码之家  ›  专栏  ›  技术社区  ›  caw

趋势主题:单字术语与组合术语

  •  3
  • caw  · 技术社区  · 15 年前

    With your perfect help here 我已经知道了如何计算趋势主题(标准分数+浮动平均)。

    我的下一个问题是:我的数据库中的术语(由1-3个单词组成)与它们被提到的时间有关。但是趋势主题总是只有一个词,因为一个词的一部分总是比完整的词更常被提及。例句:昨天有3篇关于“巴拉克奥巴马”的新闻文章,今天有148篇。当然,“巴拉克奥巴马”正在崛起。但是“巴拉克”也在上升,因此它是一个趋势话题。

    当我计算趋势主题时,如何包括术语的长度?我不想使用其他算法,我对上面的算法非常满意。我能把所有两个词的分数乘以1.5吗?

    详细的例子:我的主要趋势是:微软,中国,希拉里克林顿,达拉斯小牛。我想说的是,“希拉里克林顿”和“达拉斯小牛队”从来没有排名第一或第二,因为他们是两个词的术语。“微软”和“中国”是一个词,所以他们的排名总是更好。有没有可能解决这个问题?

    我希望你能帮助我。事先谢谢!

    2 回复  |  直到 12 年前
        1
  •  1
  •   glmxndr Amir Raminfar    15 年前

    谈论奥巴马,是的,你可以。:)

    也许你可以在输出前测试你的高趋势是否包含在低趋势中。我会尝试这样的方法:

    示例:您已经

    1. 奥巴马
    2. 法国航空公司
    3. 巴拉克
    4. A330
    5. 巴拉克奥巴马

    如果你想在不太长时间内输出的列表(比如你只拿100个最好的分数),你只选择那些不包含在其他列表中的列表,可能会给包含其他列表的列表增加50%的奖金。(您可能需要取150个第一个值,然后进行处理,消除冗余,可能达到110个,然后修剪最后10个值以恢复100个值。)

    “巴拉克奥巴马”包括“巴拉克”和“奥巴马”,所以你可以给它100%的奖金,你的名单可能会变成:

    1. 法国航空公司
    2. 巴拉克奥巴马
    3. A330

    希望它不会太多地改变您的算法,但实际上您可以在输出之前在最后插入这个处理。

    编辑:

    或者,如果你真的不列出最好的分数,而只计算一个一个的分数,你可以将你的趋势分成两部分来计算它的组成部分(比如“巴拉克奥巴马”的趋势是“巴拉克奥巴马”+0.5*“巴拉克”+0.5*“奥巴马”)。

        2
  •  0
  •   AviD    15 年前

    基于@subtenate的答案,您应该寻找的公式应该基于这样一个事实,“巴拉克奥巴马”总是包含“巴拉克”和“奥巴马”…
    简单的数学计算表明:

    "Barack"s + "Obama"s - "Barack Obama"s
    

    …当然,假设你的部分术语只在正确的上下文中出现,无论是单独出现还是合并到完整的术语中,“巴拉克”总是指“巴拉克奥巴马”(而不是“埃胡德巴拉克”)。