小编Inv*_*rse的帖子

在NLTK中实例化和使用StanfordTagger

我为这个问题的新手性质道歉 - 我一直试图找出Python包装和名称空间,但更好的观点似乎让我无法理解.也就是说,我想将Python包装器用于斯坦福的词性标注器.我在这里找到文档没有问题,它提供了一个使用示例:

st = StanfordTagger('bidirectional-distsim-wsj-0-18.tagger')
st.tag('What is the airspeed of an unladen swallow ?'.split())
    [('What', 'WP'), ('is', 'VBZ'), ('the', 'DT'), ('airspeed', 'NN'), ('of', 'IN'), ('an', 'DT'), ('unladen', 'JJ'), ('swallow', 'VB'), ('?', '.')]
Run Code Online (Sandbox Code Playgroud)

这看起来很棒,但我似乎无法在我的本地Python + NLTK安装中显示正确的命名空间(我有最新的NLTK版本,并在Python 2.6.x以及2.7.x中尝试过以下) :

>>> import nltk
>>> from nltk import *
>>> from nltk.tag import stanford 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name stanford
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个import语句,结果相同:

>>> from nltk.tag.stanford import StanfordTagger
Traceback (most recent call last): …
Run Code Online (Sandbox Code Playgroud)

python nltk

7
推荐指数
1
解决办法
5110
查看次数

在Pig中按袋值分组

我一直坚持这个问题.我有一个如下所示的数据文件:

2012/01/01        Name1      "Category1,Category2,Category3"
2012/01/01        Name2      "Category2,Category3"
2012/01/01        Name3      "Category1,Category5"
Run Code Online (Sandbox Code Playgroud)

每个项目都与逗号分隔的类别列表相关联.我希望能够按类别名称分组,以获得这样的输出:

Category1    Name1, Name3
Category2    Name1, Name2
...
Category5    Name3
Run Code Online (Sandbox Code Playgroud)

(更具体地说,我不需要项目的名称 - 只需要该类别中项目数量的计数)

我最后编写了一个UDF来获取逗号分隔的类别字段,并将其转换为Pig包.我的数据模式现在是这样的: {date: chararray, name: chararray, categories: {t: (category:chararray)}}

我陷入了下一步 - 实际上通过嵌套包值执行分组.我试过没有运气的嵌套FOREACH语句的变种.例如:

x = FOREACH myData
{
categoryNames = FOREACH categories GENERATE category;
GENERATE myData.Name, categoryNames;
}
Run Code Online (Sandbox Code Playgroud)

我的想法是这种语法可以生成(名称,类别)的元组,我可以运行GROUP.然而,实际的输出是整个包,让我回到正方形1.我不知道如何继续 - 帮助/反馈将是最受欢迎的.谢谢!

user-defined-functions apache-pig

4
推荐指数
1
解决办法
2685
查看次数

将多个数据帧中的内容绘制到单个ggplot2表面中

我在这里是一名R初学者,这个问题具有相应的复杂程度.

我在R中使用ROCR包来生成ROC曲线的绘图数据.然后我用ggplot2画出情节.像这样的东西:

library(ggplot2)
library(ROCR)

inputFile <- read.csv("path/to/file", header=FALSE, sep=" ", colClasses=c('numeric','numeric'), col.names=c('score','label'))

predictions <- prediction(inputFile$score, inputFile$label)
auc <- performance(predictions, measure="auc")@y.values[[1]]

rocData <- performance(predictions, "tpr","fpr")
rocDataFrame <- data.frame(x=rocData@x.values[[1]],y=rocData@y.values[[1]])

rocr.plot <- ggplot(data=rd, aes(x=x, y=y)) + geom_path(size=1)
rocr.plot <- rocr.plot + geom_text(aes(x=1, y= 0, hjust=1, vjust=0, label=paste(sep = "", "AUC = ",round(auc,4))),colour="black",size=4)
Run Code Online (Sandbox Code Playgroud)

这适用于绘制单个ROC曲线.但是,我想要做的是读取整个目录中的输入文件 - 每个分类器测试结果一个文件 - 并制作所有ROC曲线的ggplot2多面图,同时仍然将AUC分数打印到每个图中.

我想了解什么是"适当的"R风格的方法来实现这一目标.我确信我可以通过一个循环遍历目录中的所有文件并为每个文件创建一个单独的数据框,然后有另一个循环来创建多个图,并以某种方式获取ggplo2将所有这些图输出到同一个表面.但是,这不允许我使用ggplot2的内置分面,我认为这是正确的方法.不过,我不确定如何将我的数据设置为正确的形状以供分面使用.我应该将所有数据框合并为一个,并为每个合并的块提供一个名称(例如文件名)并在其上进行分区吗?如果是这样,是否有图书馆或推荐的做法来实现这一目标?

您的建议表示赞赏.我仍然围绕着R中的最佳实践,所以我宁愿得到专家建议而不是仅仅是为了使代码看起来更像普通的声明性编程语言而已经习惯了.

编辑:我最不清楚的是,当使用ggplot2的内置分面功能时,我是否仍然能够将自定义字符串(AUC分数)输出到它将生成的每个绘图中.

r ggplot2

4
推荐指数
1
解决办法
4093
查看次数

标签 统计

apache-pig ×1

ggplot2 ×1

nltk ×1

python ×1

r ×1

user-defined-functions ×1