python包,它根据两个项的标记相关度得分计算它们之间的相似性,并将项列表及其对应的顶级项邻居写入文件。

SimilarityCalculator的Python项目详细描述


#SimilarityCalculator

*使用并行处理和高效的C实现快速计算项列表之间的相似性;并且
将每个项的顶级邻居(最相似的项)打印到文件中。*


[构建状态](https://travis-ci.org/smltahir/similaritycalculator.svg?branch=master)](https://travis ci.org/smltahir/similaritycalculator)


为了最大限度地保证不出现错误,travis ci测试链接到源github存储库。travis对推送到github的最新代码运行几个
单元测试,并显示一个指示**build_passing**或
**build_failing**的标记。由于该项目目前正在持续开发中,因此建议只使用作为代码版本发布的稳定版本。





similaritycalculator当前在python版本上运行:*2.6*,*2.7*,*pypy*

如何运行:

将**pythonpath**环境变量设置为python bin目录

**runnable modules**:

-load-neighbors.py
-test/unit-tests-load-neighbors.py


load-neighbors:

加载邻居。py
```

单元测试:

`````
python测试/单元测试加载邻居。py
````

获取任何可运行模块的信息:

*python<;modulename.py>;-h
*python<;modulename.py>;--帮助

这将告诉您如何运行程序及其可用的命令行参数。


应遵循similaritycalculator/data/samples/作为从外部模块运行工具的模型。

因此,它非常快速和高效。如果用户希望在
相似性和最近邻计算期间使用较少的cpu,则应适当设置**cpu数量**配置参数。
其默认值为**max**。




使用余弦相似度计算项目之间的相似度。我们目前正在努力将代码扩展到包含更多度量值。

**config.json**-这是最通用的配置文件。此处存储您不打算经常更改其值的参数。这些通常包括输入/输出文件路径等。**config.test.json**-此文件应用于测试参数或您计划经常更改其值的参数。这可以包括CPU数量、邻域大小等
3。**config.local.json**-此文件未写入github存储库,必须在首次使用代码时创建。这用于存储本地和私有参数及其值。**不要**将这些
参数存储在任何其他配置文件中。

如果在两个或多个文件中设置了相同的配置参数,则分配顺序如下。
config.local.json>;config.test.json>;json
这意味着如果在本地和测试配置文件中都设置了参数,那么config.test中的
参数值将被config.local等覆盖。

这些文件中需要修改以下参数。

1.**CPU数量**

*示例条目*:

"CPU数量":2

*默认输入*:

"CPU数量":"max"



如果用户没有更改,
默认值为"max",这意味着将使用最大可用CPU进行计算。对于
大型数据集以及需要快速计算时,请使用此选项。此参数的最小值为1。

>2。**文件相关性预测**

*示例条目*:

"文件相关性预测":"正确/路径/插入/此处/示例文件.csv"

*默认条目*:

"文件相关性预测":"数据/相关性预测.txt"

主输入文件的路径。建议将所有数据文件存储在similaritycalculator/data/
目录中。输入文件可以是.txt、.csv(逗号分隔)或.tsv(制表符分隔)文件。
它包含3个值:

)只要在
**输入字段分隔符**配置参数中声明,就可以用任何**输入字段分隔符**替换(见下文)。

item1是需要对其执行最近邻分析的集合的实体。item2(以下称为
**tag**)是用作比较item1集合的两个实体的度量的实体。

*示例1:


用于检查两部电影的相似程度,这取决于它们在不同类型中的分类程度。分数的标准化是在程序内完成的,因此在准备所需的输入文件时,不必担心这一点。


*示例2:


userid,movieid,rating
1,96,4.5
1,54,2.0
2,96,5.0
2,54,1.0
3,96,3.0
3,54,4.0


similaritycalculator/data/samples/directory。

此代码已在包含多达250万行的数据文件上成功测试。

3.**输入字段分隔符**

*示例条目*(制表符空格):

"输入字段分隔符":"\t"

*默认条目*(逗号):

"输入字段分隔符":","


这是标记(空格、制表符空格、逗号、冒号、分号,用于分隔
输入文件的两个字段。上面可以看到一些例子。

4.**标记加权**

*有效条目*:

"标记加权":"t"
"标记加权":"f"

*默认条目*:

"标记加权":"f"

此配置参数只能接受两个值-"t"(true)和"f"(假)默认情况下,它的值是f,这意味着标签的权重都是相等的(=1.0)。当某些标记(如上所述)需要
以不同于其他标记的方式进行加权时,请指定值"t"。如果希望某些标记在确定
最近的邻居时发挥更大的作用,则可能会发生这种情况。

5.**文件标记权重**

*示例条目*:

"文件标记权重":"正确/路径/插入/此处/示例标记文件.csv"

*默认条目*:

"file_tag_weights":"data/tagweights.txt"

这是一个可选的输入文件。只有当参数
**tag_weighted**设置为"t"(true)时,才会考虑此参数的值。此文件的格式如下:


tag,tag_weight


请保留文件的第一行作为标题行,以提高可读性。
逗号(,)只要在
**输入字段分隔符**配置参数中声明,就可以用任何**输入字段分隔符**替换(见上文)。下面是一个制表符分隔的示例。

*示例*:

"taga"2.3
"tagb"1.0
"tagc"-2.0

**请注意**:如果包含此文件,**所有**标记都必须指定权重。

6。**文件邻居**


*示例条目*:

"文件邻居":"正确/路径/插入/此处/示例文件.txt"

*默认条目*:

"文件邻居":"数据/邻居.txt"

存储最终输出文件的位置。建议将其存储在
similaritycalculator/data/目录中,默认情况下是这样做的。生成的文件格式如下:


itemID,neighbor1,相似度评分

*示例*:


1 1 4.7657
1 2 4.6790
1 4 4.4423
1 5 4.4208
13 2.8345
2 4.7657
2 1 4.6790
2 4 4.5840
2 5 4.5061
2 3 2.9758

相似性得分按
的降序排列。这意味着最近的邻居将显示在顶部。

7.**邻域大小**

*示例条目*:

"邻域大小":50

*默认条目*:

"邻域大小":250

这决定了您希望程序计算每个项目的顶级邻域的数量。如果该值
设置为大于项目总数,则所有项目都将与其相似性分数一起打印,作为每个项目的
邻居。

8.**日志名称**

*示例条目*:

"日志名称":"正确/路径/插入/此处/示例文件.txt"

*默认条目*:

"日志名称":"日志/加载邻居.txt"

计划的一部分。建议将其存储在
similaritycalculator/logs/目录中,这是默认情况下的操作。

9。**项目1_列编号**

*示例条目*:

"项目1_列编号":4

*默认条目*:

"项目1_列编号":0


属于itemid1集合(如前所定义)的实体。当输入文件是一个
多列文件时,它特别有用,因为它不是专门为模拟计算器程序准备的输入文件。

*示例*:


movieid,budget,boxofficesales,genre,relevancescore(genretomovieid)
1,87,76,"action",0.50
1,87,76,"喜剧",0.75
2,45,30,"动作",0.67
2,45,30,"喜剧",0.30
3,95110,"动作",0.98
3,95110,"喜剧",0.10

我们将设置

"item1_column_no":0
"item2_column_no":3
"相关性"core_column_no":4

**注**:此处的列编号从0开始,而不是从1开始。
有关上述示例中显示的其他两个参数的说明,请参阅下面相应的部分。

10。**item2_列编号**

*示例条目*:

"item2_列编号":4

*默认条目*:

"item2_列编号":1


属于itemid2集合的实体(如前所定义)。当输入文件是一个
多列文件,而不是专门为similaritycalculator程序准备的输入文件时,它特别有用。

请参考上面的示例,了解此参数的用法。

11。**关联度评分栏**

*示例条目*:

"关联度评分栏编号":1

*默认条目*:

"关联度评分栏编号":2


此参数告诉程序.csv/.tsv的哪一列*相关性预测*文件它可以找到属于相关性得分集(如前所述)的
实体。当输入文件
是多列文件,而不是专门准备作为SimilarityCalculator程序的输入时,它特别有用。

请参阅上面的示例以了解此参数的用法。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
来自Oozie Java Jobs的电子邮件   泛型Java映射。具有有界通配符的getOrDefault   java如何制作定制的Swing容器?   java断言使用正则表达式重新启动响应体   安卓 java正则表达式查找字符串中的所有空格   java循环语法不起作用   使用spring4@Transactional时,java事务不起作用   java三桨乒乓球命中检测   java Camera 2 Api错误不拍照的错误   java使用ServletContext从war外部读取Hibernate属性   性能如何禁用Java垃圾回收器?   如何通过MySQL触发器执行外部java函数?   使用Ecfbittorent下载torrent时出现java NegativeArraySizeException   java Android arraylist因迭代而崩溃   MyBatis中的java Delete查询没有删除任何内容