小编Tex*_*Tex的帖子

使用Stanford CoreNLP解析共享 - 无法加载解析器模型

我想做一个非常简单的工作:给一个包含代词的字符串,我想解决它们.

例如,我想把这句话改为"玛丽有一只小羊羔.她很可爱." 在"玛丽有一只小羊羔.玛丽很可爱."

我曾尝试使用Stanford CoreNLP.但是,我似乎无法启动解析器.我使用Eclipse在项目中导入了所有包含的jar,并且我已经为JVM(-Xmx3g)分配了3GB.

错误非常尴尬:

线程"main"中的异常java.lang.NoSuchMethodError:edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel(Ljava/lang/String; [Ljava/lang/String;)Ledu/stanford/nlp/parser/lexparser/LexicalizedParser;

我不明白L的来源,我认为这是我问题的根源......这很奇怪.我试图进入源文件,但没有错误的引用.

码:

import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations.CollapsedCCProcessedDependenciesAnnotation;
import edu.stanford.nlp.dcoref.CorefCoreAnnotations.CorefChainAnnotation;
import edu.stanford.nlp.dcoref.CorefCoreAnnotations.CorefGraphAnnotation;
import edu.stanford.nlp.ling.CoreAnnotations.NamedEntityTagAnnotation;
import edu.stanford.nlp.ling.CoreAnnotations.PartOfSpeechAnnotation;
import edu.stanford.nlp.ling.CoreAnnotations.SentencesAnnotation;
import edu.stanford.nlp.ling.CoreAnnotations.TextAnnotation;
import edu.stanford.nlp.ling.CoreAnnotations.TokensAnnotation;
import edu.stanford.nlp.trees.TreeCoreAnnotations.TreeAnnotation;
import edu.stanford.nlp.ling.CoreLabel;
import edu.stanford.nlp.dcoref.CorefChain;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.semgraph.SemanticGraph;
import edu.stanford.nlp.util.CoreMap;
import edu.stanford.nlp.util.IntTuple;
import edu.stanford.nlp.util.Pair;
import edu.stanford.nlp.util.Timing;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import java.util.Properties;

public class Coref {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException, …
Run Code Online (Sandbox Code Playgroud)

java nlp stanford-nlp

9
推荐指数
1
解决办法
7430
查看次数

来自PDF的干净文本

这更像是一个算法问题,而不是一个特定的语言问题,所以我很高兴收到任何语言的答案 - 甚至伪代码,甚至只是一个想法.

这是我的问题:我需要处理来自PDF文章的大型数据集,这些文章被残酷地复制/粘贴到.txt中.我只得到这种可憎的结果,大约是16k文件,3.5 GB或文本(我使用的语料库是ACL Antology Network,http: //clair.si.umich.edu/clair/aan/DatasetContents . HTML).

"垃圾"来自公式,图像,表格等等.它只是弹出正在运行的文本的中间,所以我不能使用正则表达式来清理它,我也想不出任何使用机器学习的方法.我已经花了一个星期的时间,然后我决定继续进行快速而肮脏的修复.我不在乎完全清理它,只要大部分文本区域被删除,我就不会关心漏报和积极因素.

文本的一些例子:请注意公式包含垃圾字符,但表格和标题不包含(但它们仍然使我的句子很长,因此不可解析).垃圾以粗体显示.

容易一个:

重复实验,同时抑制第一个具有最大扩展的方案的专业化,然后是两个最扩展的模式.覆盖和加速的措施很重要1只要我们有兴趣保留分配给句子的f结构,这种覆盖概念就比必要的更严格.实际上,相同的f结构可以由多个解析分配,因此在某些情况下,即使专门语法为其分配正确的f结构,也认为句子不在覆盖范围内. 2'VPv'和'VPverb [main]'涵盖由主要动词为首的VP.'NPadj'涵盖附有形容词的NP.205原规则:l/Pperfp - + ADVP*SE(t ADJUNCT)($ ADV_TYPE)= t,padv~/r {@M_Head_Perfp I @ M_Head_Passp} @(Anaph_Ctrl $){AD VP + SE('~ADJUNCT) ($ ADV_TYPE)= vpadv由以下内容替换:ADVP,[.E(~ADJUNCT)(.升.ADV_TYPE)= vpadv l /'Pperfp - + @PPadjunct @PPcase_obl {@M.Head_Pevfp [@M .. Head_Passp} @(Anaph_Ctrl~)V {@M_Head_Perfp I @ M_Head_Passp} @(Anaph_Ctrl~)图1:从实际的法语语法中修剪规则. "*"和"+"符号具有正则表达式中的通常解释.括号中的子表达式是可选的.替代子表达式用大括号括起来,并用"["符号分隔.后跟标识符的"@"是宏扩展操作符,最终由其他功能描述替换. 语料库 - .. ,, 0.1 [消除歧义的Treebank树库人类专家语法专业化专业语法图2:我们的语法专业化实验的设置.这种形式的语法修剪可以实现什么的指标. 然而,它们可能会产生误导,因为如果没有覆盖,那么未被发现的句子的失败时间可能远低于他们的句子时间.

艰难的一个:

表4总结了英语和罗马尼亚语参考的精确结果.结果表明,英语的共指是比罗马尼亚共识更明显的,但是SNIZZLE提高了两种语言的共指分辨率.通过优先级高于罗马尼亚对应的启发式的启发式解决英语共指的情况,有64%的情况.这个结果解释了为什么英语罗马尼亚语SWIZZLE在罗马尼亚名词代词上有更好的精确度增强 73%89%66%78%76%93%71°/ o 82%表4:共指精度总计84%72%87% 76%英语罗马尼亚语SWIZZLE on English SWIZZLE on Romanian Nominal 69%63%66%61%Pronomoninal Total 89%78%83%72%87%77%80%70%表5:Coreference回顾英语的共识.表5还说明了召回结果.数据驱动的共参考分辨率优于其他方法的优势在于其更好的回忆性能.这可以通过这种方法捕获更多种共参照模式来解释.即使其他共参考分辨率系统对某些特定形式的系统表现更好,但它们的召回结果却被系统方法所超越.与单语数据驱动的共参照系统的召回相比,多语言共参数反过来提高了精度.此外,表5显示英语核心结果比罗马尼亚核心结构更能回忆.但是,召回显示SNIZZLE的两种语言都有所减少,因为删除了不精确的共参考链接.通常情况下,删除数据会降低召回率.通过使用为MUC评估开发的自动记分器程序获得所有结果.

请注意表格中没有包含奇怪的字符,并且正好在句子的中间:"这个结果解释了为什么有更好的精确度增强 …

language-agnostic nlp stanford-nlp

8
推荐指数
1
解决办法
284
查看次数

Hobbs' algorithm for Coref Resolution

I have implemented Hobbs' algorithm for anaphora resolution together with Lappin & Leass ranking for alternatives.

What bugs me is that the description of the algorithm is completely informal, and since there are sentences that are not correctly resolved by my implementation I am not sure whether the limit is on my implementation or on the actual algorithm.

Here is the version I have worked with, found in the Jurafsky&Martin:

  1. Begin at the noun phrase (NP) node immediately dominating the …

java language-agnostic nlp

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

简单的Java对象没有深度复制

对于任何Java开发人员来说,这个问题应该很容易.我发誓我在花了大约2个小时后查了一下,但我真的不明白这段代码有什么问题.

基本上,我正在实施Karger的最小割算法.它需要我在图中合并节点,然后计算结尾的交叉边数(一个int值).该算法必须重复n次,始终从起始图开始.我的问题是我无法创建我的Graph对象的深层副本,我找不到错误.

我已经裁剪了代码只是为了显示问题,而不是更多,但我仍然无法弄清楚出了什么问题.这里的代码是.

类节点:

public class Node {
public Integer Data;


public Node() {
    Data = 0;
}

public Node(Node rhs) {
    Data = rhs.Data.intValue();
}

public Node(Integer rhs) {
    Data = rhs.intValue();
}

public void setNode(Integer rhs) {
    Data = rhs;
}
Run Code Online (Sandbox Code Playgroud)

类图:

public class Graph {

public ArrayList<ArrayList<Node>> AdjList;
public ArrayList<Node> NodeSet; // This contains all the nodes

public Graph() {
    AdjList = new ArrayList<ArrayList<Node>>();
    NodeSet = new ArrayList<Node>();
}

public Graph(Graph G) {
    AdjList = new ArrayList<ArrayList<Node>>(); …
Run Code Online (Sandbox Code Playgroud)

java

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

在可视化时间序列时标记特定日期

我有一个有几年数据的时间序列,例如:

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

ts = ts.cumsum()

ts.plot()
Run Code Online (Sandbox Code Playgroud)

我还有两个额外的数组:让我们先调用它

dates = [pd.datetime("2000-12-01"), pd.datetime("2001-01-03")]
Run Code Online (Sandbox Code Playgroud)

第二个

labels = ["My birthday", "My dad's birthday"]
Run Code Online (Sandbox Code Playgroud)

labels [i]包含date [i]的标签.我想要做的是在时间序列图中显示它们,以便识别它们.一种可能的可视化方法是在x轴上显示日期,从那里开始绘制一条垂直线,并在图例(带颜色编码)或线旁边的某处标记.

最终结果不应该与此有太大不同:

ExampleGraph

python matplotlib pandas

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

从解析树中获取某些节点

我正在研究一个涉及通过Hobbs算法进行回指解析的项目.我使用Stanford解析器解析了我的文本,现在我想操纵节点以实现我的算法.

目前,我不明白如何:

  • 基于其POS标签访问节点(例如,我需要以代词开头 - 我如何得到所有代词?).

  • 使用访客.我有点像Java的菜鸟,但是在C++中我需要实现一个Visitor仿函数然后处理它的钩子.我找不到Stanford Parser的Tree结构.那是jgrapht吗?如果是的话,你可以在代码片段中提供一些指示吗?

java nlp jgrapht stanford-nlp

3
推荐指数
2
解决办法
5782
查看次数

Jsoup在Google Maps API上返回错误400

我正在开展一个项目,要求我在谷歌地图上找到一些商店的坐标.我已经有了每个商店的地址.

我使用了Google地理编码API,我认为它们是我需要的:我所需要做的就是连接到DBMS,检索item_id和地址,生成地理编码API的有效URL并处理JSON数据会得到的.

我不明白为什么,但我生成的URL在我的浏览器中运行(Chrome 23和最新的Safari,OS X),但在Jsoup中不起作用.我查看了Chrome中页面的来源,看起来它是完全有效的HTML.那么什么是Jsoup做错了?

代码片段(可运行,将为您提供相同的异常):

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class RandomClass {
     public static void main(String args[]) {
     Document doc = null;
     try {
        String url = "http://maps.googleapis.com/maps/api/geocode/json?address=0+164+W+75th+St,+New%20York,+NY+10024&sensor=false";

        String ua = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17";
        doc = Jsoup.connect(url).timeout(60 * 1000).userAgent(ua).get();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

}

org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml. Mimetype=application/json; charset=UTF-8, URL=http://maps.googleapis.com/maps/api/geocode/json?address=164+W+75th+St,+New%20York,+NY+10024&sensor=false
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:436) …
Run Code Online (Sandbox Code Playgroud)

java api google-maps http jsoup

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

将ggplot2绘制密度直方图作为线条

我有一个关于我在3个网站上收集的评级的简单表格(比方说OpenTable,Yelp,TripAdvisor).评级从1到5,因此评级是因子列,网站是另一个因素列(仅允许3个值).我只有这两列和我的所有观察.该结构是一个all包含上述列的数据框.例:

Website           Rating
_________________________
Yelp                 1
TripAdvisor          2
Yelp                 3
OpenTable            2
Run Code Online (Sandbox Code Playgroud)

我想做的是有一个彩色密度图.

我的问题看起来与此主题中发布的问题完全相同:使用因子创建ggplot2的密度图

但是,该解决方案对我不起作用.我试着用我的变量名替换

ggplot(all, aes(rating, colour=website, group=website)) + geom_density()

但它不起作用.而不是给我一个插值曲线,这是我得到的:我的密度图

在我看来,我在链接线程中具有与OP相同的数据结构:all具有两个因子列(websiterating)的数据帧().

> mode(all)
[1] "list"
> head(all$website)
[1] TripAdvisor TripAdvisor TripAdvisor TripAdvisor TripAdvisor TripAdvisor
Levels: TripAdvisor OpenTable Yelp
> head(all$rating)
[1] 1 2 1 4 5 2
Levels: 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我的行为有所不同?我能做些什么来获得相同的情节?作为奖励/不同的解决方案,我还会尝试用直线插入我的点而不是使用更复杂的内核,但我需要保持密度,因为我对一个网站的观察结果比其他2个结合的更多.

数据样本:

> dput(all[sample(nrow(all), 200),])
structure(list(website = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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