小编Dav*_* J.的帖子

使用 Lucene 计算文档相似度的更好方法

我\xe2\x80\x99m 通过在索引时指定 TermVector 来使用 Lucene 索引文档集合。\n然后,我通过读取索引并计算每个文档的 TF-IDF 得分向量来检索术语及其频率。然后,使用 TF-IDF 向量,使用维基百科的余弦相似度方程计算文档之间的成对余弦相似度。

\n\n

这是我的问题:假设我在这个集合中有两个相同的文档 \xe2\x80\x9cA\xe2\x80\x9d 和 \xe2\x80\x9cB\xe2\x80\x9d (A 和 B 有超过 200 个句子)。如果我计算 A 和 B 之间的成对余弦相似度,它会给出余弦值=1,这是完全可以的。但是,如果我从 Doc \xe2\x80\x9cB\xe2\x80\x9d 中删除单个句子,它会给出这两个文档之间的余弦相似度值约为 0.85。这些文档几乎相似,但余弦值却不同。我知道问题出在 I\xe2\x80\x99m 使用的方程上。

\n\n

有没有更好的方法/方程可以用来计算文档之间的余弦相似度?

\n\n

已编辑

\n\n

这就是我计算余弦相似度的方法,doc1[]并且doc2[]是相应文档的 TF-IDF 向量。向量仅包含scores但不包含words

\n\n
private double cosineSimBetweenTwoDocs(float doc1[], float doc2[]) {\n    double temp;\n    int doc1Len = doc1.length;\n    int doc2Len = doc2.length;\n    float numerator = 0;\n    float temSumDoc1 = 0;\n    float temSumDoc2 = 0;\n    double equlideanNormOfDoc1 …
Run Code Online (Sandbox Code Playgroud)

java lucene similarity

3
推荐指数
1
解决办法
6555
查看次数

为什么Ruby的哈希方法在运行中有所不同?

# pry / irb example #1
"abc".hash
=> -1883761119486508070
"abc".hash
=> -1883761119486508070

# pry / irb example #2
"abc".hash
=> -4309321811150053495
"abc".hash
=> -4309321811150053495
Run Code Online (Sandbox Code Playgroud)

hash对于特定的调用,该值是常量,但在调用之间会有所不同.为什么?这是设计的吗?这被认为是"好事"吗?

我跑ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.0.0].

ruby hash ruby-1.9

3
推荐指数
1
解决办法
351
查看次数

3
推荐指数
1
解决办法
520
查看次数

如何禁用Clojure断言,包括前置条件?

在REPL中禁用Clojure断言(包括前置条件和后置条件)有什么好方法?对于Leiningen的任意配置文件?

clojure leiningen

3
推荐指数
1
解决办法
850
查看次数

Julia DataFrame列名

我想命名空白DataFrame的列名.

我很难(重新)在v0.6中命名DataFrame的多个列.

我试过生成名字:

df = DataFrame()
nms = [":x$i" for i in 1:2]
df[nms[1] = rand(10)]
df[nms[2] = rand(10)]
Run Code Online (Sandbox Code Playgroud)

但名称的符号要求不适用于$宏.有人有修复吗?

dataframe julia

3
推荐指数
1
解决办法
1430
查看次数

IO对象的惯例或经验法则?

我想知道IO在Ruby中使用对象的正确"契约"或最佳实践.

我有一堆辅助方法来传递IO对象.目前,对于使用IO对象的低级方法,我rewind在做完之后确保它们read.这感觉很好; 它允许我多次调用这些方法而不必担心修改IO对象.

以下是合同的一些可能性:

  1. 如上所述...如果一个方法调用read一个IO对象 - 或者以另一种方式从中读取 - 那么它应该rewind在完成后进行.这有效地将IO对象恢复到其原始状态.这是由不修改参数的Ruby惯例推动的.

  2. 调用方法应该知道低级方法正在调用read并相应地调整.(换句话说:消费者要小心!)

哪个,哪个最好?为什么?

(快速注释:io_copy = io.dup功能不同io.rewind.)

而且......如果你谈论线程安全,你应该获得奖励积分!

ruby io

2
推荐指数
1
解决办法
90
查看次数

修改Devise以支持UUID主键

我想修改Devise以使其与带有PostgreSQL的UUID主键的users表一起使用.

这是迁移:

class DeviseCreateUsers < ActiveRecord::Migration

  def change
    create_table :users, id: false do |t|
      t.uuid :uuid, null: false
      # ...
    end

    change_table :users do |t|
      t.index :uuid, unique: true
      # ...
    end
  end

  def migrate(direction)
    super
    if direction == :up
      # This is only necessary because the following does not work:
      # t.uuid :uuid, primary: true, null: false
      execute "ALTER TABLE users ADD PRIMARY KEY (uuid);"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这是User模型:

class User < ActiveRecord::Base

  primary_key = :uuid

  devise …
Run Code Online (Sandbox Code Playgroud)

postgresql uuid devise ruby-on-rails-4

2
推荐指数
1
解决办法
2405
查看次数

修复Sublime Text 3 Clojure语法突出显示(特别是Regex)

Sublime Text 3的Clojure语法突出显示经常在正则表达式上/之后中断.我看到Anthony Grimes在Sublime Text Forum上发现了这一点:http://sublimetext.userecho.com/topic/82983-clojure-regexes-are-not-parsed-properly/

这个答案有人建议:

内部Clojure.tmLanguage尝试改变

<string>source.regexp.oniguruma</string>

<string>#string_escape</string>

但是在哪里Clojure.tmLanguage?在我进行更改后,我是否只是将其保存到位?(请参阅在sublime text 3中放置.tmLanguage的位置?)

我在Sublime Text 3目录中看到了这个:

$ tree -L 1
.
??? Cache
??? Index
??? Installed\ Packages
??? Local
??? Packages
Run Code Online (Sandbox Code Playgroud)

在里面,Cache我看到,Clojure/Clojure.tmLanguage.cache但可能是不对的.

更新:我使用的是Mac OS X 10.9.

更新:我正在查看为ST3存储的.tmLanguage文件哪里

更新:此处还详细介绍了其他Clojure语法问题:http://www.sublimetext.com/forum/viewtopic.php? f = 3&t = 14077

更新:我尝试Clojure.tmLanguage.cache通过将文件重命名为Clojure.tmLanguage.zip第一个来解压缩文件.那很奇怪; 我得到一个交流和无限循环.cpgz.zip文件,我尝试解压缩它们.请参阅:discussion.apple.com/thread/1446784

clojure sublimetext3

2
推荐指数
1
解决办法
1577
查看次数