MovieLens数据集 - shell脚本

时间:2015-04-13 11:06:16

标签: macos shell

我正在使用找到here的数据集和shell脚本。当我用:

运行shell脚本时

sh split_ratings.sh

终端显示:

ratings count: 
expr: syntax error
set size: 
expr: syntax error
remainder: 
tail: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
tail: -: No such file or directory
tail: -: No such file or directory
r1.test created.   lines.
r1.train created.   lines.
tail: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
tail: -: No such file or directory
tail: -: No such file or directory
r2.test created.   lines.
r2.train created.   lines.
tail: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
tail: -: No such file or directory
tail: -: No such file or directory
r3.test created.   lines.
r3.train created.   lines.
expr: syntax error
tail: -: No such file or directory
head: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
tail: -: No such file or directory
tail: -: No such file or directory
r4.test created.   lines.
r4.train created.   lines.
tail: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
head: -: No such file or directory
expr: syntax error
tail: -: No such file or directory
tail: -: No such file or directory
r5.test created.   lines.
r5.train created.   lines.
ra.test created.   lines.

ra.train created.   lines.
rb.test created.   lines.
rb.train created.   lines.

文件全部出现在文件夹中;但是,大多数都是空的。 r5.test是唯一包含数据的.test文件,它包含以下数据:

==> ratings.dat <==
71567::1984::1::912580553
71567::1985::1::912580553
71567::1986::1::912580553
71567::2012::3::912580722
71567::2028::5::912580344
71567::2107::1::912580553
71567::2126::2::912649143
71567::2294::5::912577968
71567::2338::2::912578016
71567::2384::2::912578173

这显然不是10'000'000的20%!

唯一正确的文件是ra.trainra.test,rb.train and rb.test` - 这实际上是我不需要的唯一文件!

我没有使用Shell的经验,因此不知道为什么会发生这种情况。我正在使用Mac OS X并且所有文件都已下载 - 我没有更改任何文件结构。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。事实上,我尝试使用Xubuntu,它完美无缺。所以我打开split_ratings.sh并试图弄清楚脚本出了什么问题。令人惊讶的是,问题在于第一行。如果在您的终端上运行

$ wc -l ratings.dat | cut -d ' ' -f 1

它不会返回任何东西。第一个命令(在管道的左侧)计算文件包含的评级数。第二个,从字符串中提取数字。如果你运行

$ wc -l ratings.dat | cut -d ' ' -f 2

您将看到它正确返回数字。

所以如果你改变这个

RATINGS_COUNT=`wc -l ratings.dat | cut -d ' ' -f 1`

到这个

RATINGS_COUNT=`wc -l ratings.dat | cut -d ' ' -f 2`

该脚本现在将知道有多少评级。此外,如果在第23,24,28,29,32和33行中应用相同的更改,脚本将输出每个生成文件的行数(评级)。

我希望它有所帮助。