我正在使用斯坦福 NER,并且在实体“MISC”中有一些结果
4 class :Location, Person, Organization, Misc
Run Code Online (Sandbox Code Playgroud)
但我不知道什么真正代表了这个实体,有人知道那个实体是什么吗?
谢谢
我正在使用MaxEntTagger通过使用以下代码进行pos标记和句子分割:
MaxentTagger tagger = new MaxentTagger("models/left3words-wsj-0-18.tagger");
@SuppressWarnings("unchecked")
List<Sentence<? extends HasWord>> sentences = MaxentTagger.tokenizeText(new BufferedReader(new StringReader(out2)));
for (Sentence<? extends HasWord> sentence : sentences) {
content.append(sentence + "\n");
Sentence<TaggedWord> tSentence = MaxentTagger.tagSentence(sentence);
out.append(tSentence.toString(false) + "\n");
}
Run Code Online (Sandbox Code Playgroud)
问题是它会抱怨文本中有无法识别的字符.标记的输出将省略那些不可识别的字符.因此,例如,原始文本是:令Σ是一组有限的函数符号,即签名.
其中Σ是big5代码.但程序将显示以下警告消息:无法识别:Σ(十进制中的第一个字符:931)
标记输出为:令/ VB为/ VB a/DT有限/ JJ设置/ NN/IN函数/ NN符号/ NNS,/,/ DT签名/ NN ./.
我得到的分裂句子是:设为一组有限的函数符号,即签名.
我的问题是如何保留这些不可言说的角色?
我已经尝试修改模式的道具文件,但没有运气:
tagger training invoked at Sun Sep 21 23:03:26 PDT 2008 with arguments:
model = left3words-wsj-0-18.tagger
arch = left3words,naacl2003unknowns,wordshapes(3)
trainFile = /u/nlp/data/pos-tagger/train-wsj-0-18 ...
encoding = Big5
initFromTrees = false
有什么建议吗?
感谢Manning教授的帮助.但是在使用解析器树时遇到了同样的问题. …
我试图得到一个句子的主要主题,即一个句子在说什么(不是可能不同的语法主题).
到目前为止,我有
1.)Java中的OpenNLP,它给我句子检测,POS标记,解析,标记器和名字查找器.
2.)MatlParser,stanford Parser - 它可以通过依赖解析给出一个简单句子的语法主题.
我认为名词或名词短语总是在更一般意义上的主语,但句子可以有许多名词和名词短语.任何帮助将非常感激.
我用google搜索了很多次,但我找不到答案.我仍然尝试使用类型化的依赖项,但这还不足以获得解决方案.我想用stanford core nlp v.3.0提取一个句子的折叠依赖.但我无法,每次我得到类型依赖示例和演示.如果有人帮助使用这个API在一个句子中使用折叠的依赖关系,我将非常感激.
我使用java和类型化的依赖项对我的项目来说还不够.任何建议和参考也都很好.
我尝试在nltk中使用stanford pos tagger,但它给出了我的错误:
from nltk.tag.stanford import POSTagger
st = POSTagger('/.../models/english-bidirectional-distsim.tagger', '/.../stanford-postagger-full-2014-10-26/stanford-postagger.jar')
st.tag("dogs and cats".split())
Run Code Online (Sandbox Code Playgroud)
线程"main"中的异常java.lang.UnsupportedClassVersionError:edu/stanford/nlp/tagger/maxent/MaxentTagger:java.lang.ClassLoader.defineClass中java.lang.ClassLoader.defineClass1(Native Method)中不支持的major.minor版本52.0 (ClassLoader.java:800)位于java.net.URLClassLoader.defineClass(URLClassLoader.java:449)的java.security.ClassLoader.defineClass(SecureClassLoader.java:142)java.net.URLClassLoader.access $ 100(URLClassLoader.java) :71)java.net.URLClassLoader $ 1.run(URLClassLoader.java:361)java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)java.security.AccessController.doPrivileged(Native Method)at java. net.URLClassLoader.findClass(URLClassLoader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:425)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at java.lang.ClassLoader .loadClass(ClassLoader.java:358)at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
-------------------------------------------------- ------------------------- OSError Traceback(最近一次调用最后一次)在()----> 1 st.tag("爱自己") .分裂())
/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/tag/stanford.pyc in tag(self,tokens)57 58 def tag(self,tokens):---> 59 return self.tag_sents ([tokens])[0] 60 61 def tag_sents(self,sentences):
/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/tag/stanford.pyc in tag_sents(self,sentences)79#运行标记器并获取输出80 stanpos_output,_stderr = java(self._cmd ,classpath = self._stanford_jar,---> 81 stdout = PIPE,stderr = PIPE)82 stanpos_output = stanpos_output.decode(encoding)83
/Users/bowang/anaconda/lib/python2.7/site-packages/nltk/ 初始化 pyc文件在Java(CMD,类路径,STDIN,STDOUT,标准错误,阻断)158如果p.returncode = 0:159打印(错误.decode(sys.stdout.encoding)) - > …
我在我的系统上使用stanford-classifier-3.5.1 jar并尝试仅运行示例分类器.我收到以下错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError: edu/stanford/nlp/classify/ColumnDataClassifier : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at ClassifierDemoStanford.main(ClassifierDemoStanford.java:20)
Run Code Online (Sandbox Code Playgroud)
我试过Java版本1.6,1.7.自述文件说该软件需要Java 5(JDK 1.6.0+).请帮忙.
我的项目的目标是回答诸如以下问题:"我正在寻找20到30岁之间在Google工作的美国女性"然后我必须处理查询并查看数据库以找到答案.
为此,我需要结合斯坦福3级NERTagger和我自己的标记器.实际上,我的NER标签可以标记年龄,国籍和性别.但我需要斯坦福标记来标记组织,因为我没有任何培训文件.
现在,我有一个像这样的代码:
def __init__(self, q):
self.userQuery = q
def get_tagged_tokens(self):
st = NERTagger('C:\stanford-ner-2015-01-30\my-ner-model.ser.gz','C:\stanford-ner-2015-01-30\stanford-ner.jar')
result = st.tag(self.userQuery.split())[0]
return result
Run Code Online (Sandbox Code Playgroud)
我希望有这样的事情:
def get_tagged_tokens(self):
st = NERTagger('C:\stanford-ner-2015-01-30\my-ner-model.ser.gz','C:\stanford-ner-2015-01-30\stanford-ner.jar')
st_def = NERTagger('C:\stanford-ner-2015-01-30\classifiers\english.all.3class.distsim.crf.ser.gz','C:\stanford-ner-2015-01-30\stanford-ner.jar')
tagger = BackoffTagger([st, st_def])
result = st.tag(self.userQuery.split())[0]
return result
Run Code Online (Sandbox Code Playgroud)
这意味着标记器首先使用我的标记器,然后使用stanford标记标记未标记的单词.
是否可以将我的模型与斯坦福模型结合起来以标记组织?如果是,那么执行此操作的最佳方式是什么?
谢谢!
我正在运行Stanford CoreNLP服务器:
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9001 -timeout 50000
Run Code Online (Sandbox Code Playgroud)
每当它收到一些文本时,它就会在运行它的shell中输出它.如何防止这种情况发生?
重要的是,这是我用来将数据传递给Stanford Core NLP Server的代码:
'''
From https://github.com/smilli/py-corenlp/blob/master/example.py
'''
from pycorenlp import StanfordCoreNLP
import pprint
if __name__ == '__main__':
nlp = StanfordCoreNLP('http://localhost:9000')
fp = open("long_text.txt")
text = fp.read()
output = nlp.annotate(text, properties={
'annotators': 'tokenize,ssplit,pos,depparse,parse',
'outputFormat': 'json'
})
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(output)
Run Code Online (Sandbox Code Playgroud) 我是自然语言处理的新手.谁能告诉我OpenNLP或Stanford CoreNLP中训练有哪些模型?在使用apache openNLP包在java中编码时,我们总是要包含一些训练有素的模型(在http://opennlp.sourceforge.net/models-1.5/中找到).这些是什么?
我一直在努力让斯坦福POS Tagger工作一段时间。在一个旧的SO帖子中,我找到了以下代码(略作修改):
stanford_dir = 'C:/Users/.../stanford-postagger-2017-06-09/'
from nltk.tag import StanfordPOSTagger
#from nltk.tag.stanford import StanfordPOSTagger # I tried it both ways
from nltk import word_tokenize
# Add the jar and model via their path (instead of setting environment variables):
jar = stanford_dir + 'stanford-postagger.jar'
model = stanford_dir + 'models/english-left3words-distsim.tagger'
pos_tagger = StanfordPOSTagger(model, jar, encoding='utf8')
text = pos_tagger.tag(word_tokenize("What's the airspeed of an unladen swallow ?"))
print(text)
Run Code Online (Sandbox Code Playgroud)
但是,出现以下错误:
LookupError:
===========================================================================
NLTK was unable to find the java file!
Use software specific configuration …Run Code Online (Sandbox Code Playgroud)