标签: stanford-nlp

stanford nlp tokenizer

如何使用stanford解析器对java类中的字符串进行标记?

我只能找到documentProcessor和PTBTokenizer从外部文件中获取文本的示例.

 DocumentPreprocessor dp = new DocumentPreprocessor("hello.txt");
   for (List sentence : dp) {
    System.out.println(sentence);
  }
  // option #2: By token

   PTBTokenizer ptbt = new PTBTokenizer(new FileReader("hello.txt"),
          new CoreLabelTokenFactory(), "");
  for (CoreLabel label; ptbt.hasNext(); ) {
    label = (CoreLabel) ptbt.next();
    System.out.println(label);
  }
Run Code Online (Sandbox Code Playgroud)

谢谢.

tokenize stanford-nlp

6
推荐指数
1
解决办法
5299
查看次数

使用rJava包中的R中的Stanford NLP库

有没有人有使用StanfordCoreNLP的经验(http://nlp.stanford.edu/software/corenlp.shtml通过r中的rJava?我现在一直在努力让它工作两天,并且认为我已经筋疲力尽了Google和之前关于StackOverflow的问题.

本质上我正在尝试使用R中的StanfordNLP库.我没有Java经验,但有其他语言的经验,所以要了解有关类和对象等的基础知识.

从我所看到的,随库提供的演示.java文件似乎表明,要使用Java中的类,您需要导入库然后创建一个新对象,类似于:

import java.io.*;
import java.util.*;

import edu.stanford.nlp.io.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.trees.*;
import edu.stanford.nlp.util.*;

    public class demo {

        etc.
        etc.

        StanfordCoreNLP pipeline = new StanfordCoreNLP();

        etc.
Run Code Online (Sandbox Code Playgroud)

从R内部,我试过调用一些标准的java函数; 这工作正常,这让我觉得这是我试图访问导致问题的斯坦福图书馆的方式.

我将斯坦福ZIP解压缩到h:\ stanfordcore,因此.jar文件都在此目录的根目录中.除了zip中包含的各种其他文件外,它还包含主要的.jar文件:

  • 乔达-time.jar
  • 斯坦福大学corenlp-1.3.4.jar
  • 斯坦福大学corenlp-1.3.4-javadoc.jar
  • 斯坦福大学corenlp-1.3.4-models.jar
  • 乔达时间 - 2.1 sources.jar
  • jollyday-0.4.7-sources.jar
  • 斯坦福大学corenlp-1.3.4-sources.jar
  • xom.jar
  • jollyday.jar

如果我尝试从命令行访问NLP工具,它可以正常工作.

在R中,我初始化了JVM并设置了classpath变量:

.jinit(classpath = " h:/stanfordcore", parameters = getOption("java.parameters"),silent = FALSE, force.init = TRUE)
Run Code Online (Sandbox Code Playgroud)

在此之后,如果我使用该命令

.jclassPath() 
Run Code Online (Sandbox Code Playgroud)

这表明已添加包含所需.jar文件的目录,并在R中提供此输出:

[1]"H:\ RProject-2.15.1\library\rJava\java""h:\ stanfordcore"

但是,当我尝试创建一个新对象(不确定这是否是正确的Java术语)时,我收到一个错误.

我试过用几十种不同的方式创建对象(虽然基本上是在黑暗中拍摄),但最有希望的(因为它似乎实际上找到了类):

pipeline <- .jnew(class="edu/stanford/nlp/pipeline/StanfordCoreNLP",check=TRUE,silent=FALSE) …
Run Code Online (Sandbox Code Playgroud)

java r stanford-nlp rjava

6
推荐指数
1
解决办法
3493
查看次数

使用Stanford POS Tagger获取多个标签

我正在使用Stanford POS Tagger进行POS标记.标记器仅为输入句子返回一个可能的标记.例如,当提供输入句子"小丑哭泣"时,POS标签器产生(错误的)"The_DT clown_NN weeps_NNS ._.".

但是,我的应用程序将尝试解析结果,并可能拒绝POS标记,因为无法解析它.因此,在此示例中,它将拒绝"The_DT clown_NN weeps_NNS ._".但会接受"The_DT clown_NN weeps_VBZ ._." 我假设它是解析器的低置信度标记.

因此,我希望POS标记器为每个单词的标记提供多个假设,并通过某种置信度值进行注释.通过这种方式,我的应用程序可以选择具有最高置信度的POS标记,从而实现针对其目的的有效解析.

我发现没有办法要求Stanford POS Tagger为每个单词(甚至整个句子)产生多个(最好的)标记假设.有没有办法做到这一点?(或者,我也可以使用另一个具有相同性能的POS标记器来支持此功能.)

nlp pos-tagger stanford-nlp

6
推荐指数
1
解决办法
567
查看次数

运行斯坦福提供的开放信息提取时出错

我正在尝试使用官方网站上给出的命令运行stanford nlp给出的openIE:http://nlp.stanford.edu/software/openie.shtml

java -mx1g -cp stanford-openie.jar:stanford-openie-models.jar edu.stanford.nlp.naturalli.OpenIE  mytextfile.txt
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at edu.stanford.nlp.pipeline.StanfordCoreNLP.<clinit>(StanfordCoreNLP.java:99)
at edu.stanford.nlp.naturalli.OpenIE.main(OpenIE.java:679)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
Run Code Online (Sandbox Code Playgroud)

当我运行给出的java代码时:

package edu.stanford.nlp.naturalli;

import edu.stanford.nlp.ie.util.RelationTriple;
import edu.stanford.nlp.ling.CoreAnnotations;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import edu.stanford.nlp.util.CoreMap;

import java.util.Collection;
import java.util.List;
import java.util.Properties;

public class OpenIEDemo {

public static void main(String[] args) throws Exception {
// Create the Stanford CoreNLP pipeline
Properties props = new Properties();
props.setProperty("annotators", …
Run Code Online (Sandbox Code Playgroud)

stanford-nlp

6
推荐指数
1
解决办法
2236
查看次数

为什么使用nltk的Stanford解析器无法正确解析句子?

我在python中使用nttk的Stanford解析器,并从Stanford Parser和NLTK获得帮助 以建立斯坦福nlp库.

from nltk.parse.stanford import StanfordParser
from nltk.parse.stanford import StanfordDependencyParser
parser     = StanfordParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")
dep_parser = StanfordDependencyParser(model_path="edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz")
one = ("John sees Bill")
parsed_Sentence = parser.raw_parse(one)
# GUI
for line in parsed_Sentence:
       print line
       line.draw()

parsed_Sentence = [parse.tree() for parse in dep_parser.raw_parse(one)]
print parsed_Sentence

# GUI
for line in parsed_Sentence:
        print line
        line.draw()
Run Code Online (Sandbox Code Playgroud)

我得到了错误的解析和依赖树,如下例所示,它将'see'视为名词而不是动词.

示例解析树 示例依赖关系树

我该怎么办?当我改变句子时,它完全正常工作,例如(一个='John see Bill').从这里正确的解析树输出可以看到这句话的正确输出

正确输出的示例如下所示:

正确解析

正确的依赖解析树

python parsing nlp nltk stanford-nlp

6
推荐指数
1
解决办法
4232
查看次数

Spark Scala - java.util.NoSuchElementException和数据清理

我之前遇到过类似的问题,但我正在寻找一个可以回答的问题.我正在使用spark-corenlp在电子邮件中获得Sentiment分数.有时候,情绪()会在某些输入上崩溃(也许它太长了,也许它有意想不到的特征).它没有告诉我它在某些情况下崩溃,只是返回Column sentiment('email).因此,当我尝试show()超出某个点或save()我的数据框时,我得到一个java.util.NoSuchElementException因为sentiment()必须在该行没有返回任何内容.

我的初始代码是加载数据,并sentiment()spark-corenlpAPI 所示应用.

       val customSchema = StructType(Array(
                        StructField("contactId", StringType, true),
                        StructField("email", StringType, true))
                        )

// Load dataframe   
val df = sqlContext.read
                        .format("com.databricks.spark.csv")
                        .option("delimiter","\t")          // Delimiter is tab
                        .option("parserLib", "UNIVOCITY")  // Parser, which deals better with the email formatting
                        .schema(customSchema)              // Schema of the table
                        .load("emails")                        // Input file


    val sent = df.select('contactId, sentiment('email).as('sentiment)) // Add sentiment analysis output to dataframe
Run Code Online (Sandbox Code Playgroud)

我试图过滤null和NaN值: …

scala stanford-nlp nosuchelementexception apache-spark

6
推荐指数
0
解决办法
856
查看次数

如何使用sparklyr为Apache Spark实现Stanford CoreNLP包装?

我正在尝试创建一个R包,因此我可以使用来自R的Apache Spark(来自数据库)的Stanford CoreNLP包装器.我正在使用sparklyr包连接到我的本地Spark实例.我创建了一个包含以下依赖函数的包

spark_dependencies <- function(spark_version, scala_version, ...) {
  sparklyr::spark_dependency(
    jars = c(
      system.file(
        sprintf("stanford-corenlp-full/stanford-corenlp-3.6.0.jar"),
        package = "sparkNLP"
      ),
      system.file(
        sprintf("stanford-corenlp-full/stanford-corenlp-3.6.0-models.jar"),
        package = "sparkNLP"
      ),
      system.file(
        sprintf("stanford-corenlp-full/stanford-english-corenlp-2016-01-10-models.jar"),
        package = "sparkNLP"
      )
    ),
    packages = c(sprintf("databricks:spark-corenlp:0.2.0-s_%s", scala_version))
  )
}
Run Code Online (Sandbox Code Playgroud)

在日志中,我可以看到两个databricks包都加载了相关的jar.我将所有coreNLP解压缩到stanford-corenlp-full文件夹,因此应正确加载所有依赖项.

Ivy Default Cache set to: /Users/Bob/.ivy2/cache
The jars for the packages stored in: /Users/Bob/.ivy2/jars
:: loading settings :: url = jar:file:/Users/Bob/Library/Caches/spark/spark-2.0.0-bin-hadoop2.7/jars/ivy-2.4.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
com.databricks#spark-csv_2.11 added as a dependency
com.amazonaws#aws-java-sdk-pom added as a dependency
databricks#spark-corenlp added as a dependency
:: resolving dependencies :: org.apache.spark#spark-submit-parent;1.0 …
Run Code Online (Sandbox Code Playgroud)

r stanford-nlp apache-spark sparklyr

6
推荐指数
1
解决办法
577
查看次数

处理"StanfordTokenizer将在版本3.2.5中弃用"警告

我正在使用NLTK包装器测试StanfordNERTagger并出现此警告:

DeprecationWarning: The StanfordTokenizer will be deprecated in version 
3.2.5. Please use nltk.tag.corenlp.CoreNLPPOSTagger or 
nltk.tag.corenlp.CoreNLPNERTagger instead.
super(StanfordNERTagger, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

from nltk import word_tokenize, pos_tag, ne_chunk
from nltk.tag import StanfordNERTagger

sentence = "Today George went to school and met his friend Peter."

# stanford's NER tagger 3 entity classification
st = StanfordNERTagger('/home/hercules/Desktop/PhD/Tools/stanford-ner-
     2017-06-09/classifiers/english.all.3class.distsim.crf.ser.gz',
     '/home/hercules/Desktop/PhD/Tools/stanford-ner-2017-06-09/stanford-
     ner.jar',
     encoding='utf-8')

tokenized_text = word_tokenize(sentence)
classified_text = st.tag(tokenized_text)

print("Stanford NER tagger:")
print(classified_text)
Run Code Online (Sandbox Code Playgroud)

我试图使用CoreNLPNERTagger,但我找不到任何示例或文档.我只发现了这个链接: 它在类CoreNLPNERTagger(CoreNLPTagger)的注释中提供类似示例(我通过搜索关键字"CoreNLPNERTagger"找到它)

我试着不遵循这个例子.我想我应该首先启动(如果这是正确的术语)coreNLP服务器,但如果是这样,我不知道如何.

如果有人有任何想法或建议,我将不胜感激.

python named-entity-recognition nltk stanford-nlp

6
推荐指数
1
解决办法
1474
查看次数

stanford corenlp不工作

我正在使用Windows 8,并使用pyDev在eclipse中运行python.

我从网站上安装了Stanford coreNLP(python版本):https: //github.com/relwell/stanford-corenlp-python

当我尝试导入corenlp时,我收到以下错误消息.

Traceback (most recent call last):
  File "C:\Users\Ghantauke\workspace\PythonTest2\test.py", line 1, in <module>
    import corenlp
  File "C:\Python27\lib\site-packages\corenlp\__init__.py", line 13, in <module>
    from corenlp import StanfordCoreNLP, ParserError, TimeoutError, ProcessError
  File "C:\Python27\lib\site-packages\corenlp\corenlp.py", line 28, in <module>
    import pexpect
  File "C:\Python27\lib\site-packages\pexpect.py", line 85, in <module>
    support it. Pexpect is intended for UNIX-like operating systems.""")
ImportError: No module named resource

A critical module was not found. Probably this operating system does not
support it. Pexpect is intended for …
Run Code Online (Sandbox Code Playgroud)

python parsing linguistics stanford-nlp

5
推荐指数
1
解决办法
5020
查看次数

运行斯坦福corenlp服务器与法国模型

我试图用Stanford CoreNLP工具分析一些法语文本(这是我第一次尝试使用任何StanfordNLP软件)

为此,我已经下载了v3.6.0 jar和相应的法语模型.

然后我运行服务器:

java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer
Run Code Online (Sandbox Code Playgroud)

如本回答所述,我将API称为:

wget --post-data 'Bonjour le monde.' 'localhost:9000/?properties={"parse.model":"edu/stanford/nlp/models/parser/nndep/UD_French.gz", "annotators": "parse", "outputFormat": "json"}' -O -
Run Code Online (Sandbox Code Playgroud)

但我得到以下日志+错误:

 [pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP  
 Adding annotator tokenize
 [pool-1-thread-1] INFO edu.stanford.nlp.pipeline.TokenizerAnnotator - TokenizerAnnotator: No tokenizer type provided. Defaulting to PTBTokenizer.
 [pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP -   Adding annotator ssplit
 [pool-1-thread-1] INFO edu.stanford.nlp.pipeline.StanfordCoreNLP - Adding annotator parse
 [pool-1-thread-1] INFO edu.stanford.nlp.parser.common.ParserGrammar - Loading parser from serialized file edu/stanford/nlp/models/parser/nndep/UD_French.gz ... 

 edu.stanford.nlp.io.RuntimeIOException: java.io.StreamCorruptedException: invalid stream header: 64696374
    at edu.stanford.nlp.parser.common.ParserGrammar.loadModel(ParserGrammar.java:188)
    at …
Run Code Online (Sandbox Code Playgroud)

stanford-nlp stanford-nlp-server

5
推荐指数
1
解决办法
1643
查看次数