关于"特征选择/提取器/权重"是什么意思以及它们之间的区别,我有点困惑.在我阅读文献时,有时候我会感到迷茫,因为我发现这个术语使用得非常松散,我的主要关注点是 -
当人们谈论特征频率,特征存在时 - 它是否是特征选择?
当人们谈论信息增益,最大熵等算法时,它仍然是特征选择.
如果我训练分类器 - 使用要求分类器记录文档中单词位置的特征集作为示例 - 是否仍然会调用此特征选择?
谢谢Rahul Dighe
我有一个文本,我想从中提取名词短语.我可以很容易地获得我所拥有的文本的类型解析器,但想知道如何在文本中提取名词短语?
我想使用Stanford CoreNLP(或其他工具)提取两个实体之间的完整关系.
例如:
Windows 比 Linux 更受欢迎.
这个工具需要 Java.
足球是世界上最受欢迎的游戏.
什么是最快的方式?那是什么最好的做法?
提前致谢
我正在使用CoreNLP进行命名实体提取,并遇到了一些问题.问题在于,只要命名实体由多个标记组成,例如"Han Solo",注释器就不会将"Han Solo"作为单个命名实体返回,而是作为两个单独的实体,"Han""Solo" .
是否可以将命名实体作为一个令牌?我知道我可以在这个范围内使用带有classifyWithInlineXML的CRFClassifier,但我的解决方案要求我使用CoreNLP,因为我也需要知道单词编号.
以下是我到目前为止的代码:
Properties props = new Properties();
props.put("annotators", "tokenize,ssplit,pos,lemma,ner,parse");
props.setProperty("ner.model", "edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz");
pipeline = new StanfordCoreNLP(props);
Annotation document = new Annotation(text);
pipeline.annotate(document);
List<CoreMap> sentences = document.get(SentencesAnnotation.class);
for (CoreMap sentence : sentences) {
for (CoreLabel token : sentence.get(TokensAnnotation.class)) {
System.out.println(token.get(NamedEntityTagAnnotation.class));
}
}
Run Code Online (Sandbox Code Playgroud)
帮助我Obi-Wan Kenobi.你是我唯一的希望.
如何获得依赖树,如下图所示.我可以将依赖关系作为纯文本,并在dependencysee工具的帮助下获得依赖图.但是依赖树如何将单词作为节点和依赖作为边缘.非常感谢!
我是自然语言处理的新手.我需要从文本中提取名词短语.到目前为止,我已经使用open nlp的分块解析器来解析我的文本以获得树结构.但是我无法从中提取名词短语.树结构,在打开的nlp中是否有任何正则表达式模式,以便我可以用它来提取名词短语.
以下是我正在使用的代码
InputStream is = new FileInputStream("en-parser-chunking.bin");
ParserModel model = new ParserModel(is);
Parser parser = ParserFactory.create(model);
Parse topParses[] = ParserTool.parseLine(line, parser, 1);
for (Parse p : topParses){
p.show();}
Run Code Online (Sandbox Code Playgroud)
在这里,我得到的输出为
(TOP(S(S(ADJP(JJ welcome)(PP(TO to)(NP(NNP Big)(NNP Data.)))))(S(NP(PRP We))(VP(VP(VBP)) (VP(VBG工作)(PP(IN on)(NP(NNP Natural)(NNP语言)(NNP Processing.can)))))(NP(DT some)(CD one)(NN帮助))(NP( PRP us))(PP(IN in)(S(VP(VBG提取)(NP(DT)(NN名词)(NNS短语))(PP(IN)(NP(DT))(NN树)( WP结构.))))))))))
有人可以帮助我获取像NP,NNP,NN等名词短语.可以告诉我,我是否需要使用任何其他NP Chunker来获取名词短语?是否有任何正则表达式模式来实现相同的目的.
请帮帮我.
提前致谢
Gouse.
有没有办法以更高效的方式使用Standford Tagger?
每次调用NLTK的包装器都会为每个分析的字符串启动一个新的java实例,这非常非常慢,特别是当使用更大的外语模型时......
http://www.nltk.org/api/nltk.tag.html#module-nltk.tag.stanford
我试图在动词对之间实现关系提取.我想使用从一个动词到另一个动词的依赖路径作为我的分类器的一个特征(预测关系X是否存在).但我不确定如何将依赖路径编码为一个功能.以下是一些示例依赖路径,作为与StanfordCoreNLP Collapsed Dependencies的空格分隔关系注释:
nsubj acl nmod:from acl nmod:by conj:and
nsubj nmod:into
nsubj acl:relcl advmod nmod:of
Run Code Online (Sandbox Code Playgroud)
重要的是要记住,这些路径长度可变,并且可以不受任何限制地重新出现这种关系.
我想到的两种对这种功能进行编码的折衷方法是:
1)忽略序列,每个关系只有一个特征,其值是它在路径中出现的次数
2)具有长度为n的滑动窗口,并且对于每个可能的关系对具有一个特征,其值是这两个关系连续出现的次数.我想这是编码n-gram的方式.但是,可能关系的数量是50,这意味着我不能真正采用这种方法.
欢迎任何建议.
nlp machine-learning feature-extraction information-extraction stanford-nlp
注意:我使用Python 2.7作为Anaconda发行版的一部分.我希望这不是nltk 3.1的问题.
我正在尝试使用nltk作为NER
import nltk
from nltk.tag.stanford import StanfordNERTagger
#st = StanfordNERTagger('stanford-ner/all.3class.distsim.crf.ser.gz', 'stanford-ner/stanford-ner.jar')
st = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz')
print st.tag(str)
Run Code Online (Sandbox Code Playgroud)
但我明白了
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at edu.stanford.nlp.io.IOUtils.<clinit>(IOUtils.java:41)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1117)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1076)
at edu.stanford.nlp.ie.AbstractSequenceClassifier.classifyAndWriteAnswers(AbstractSequenceClassifier.java:1057)
at edu.stanford.nlp.ie.crf.CRFClassifier.main(CRFClassifier.java:3088)
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)
... 5 more
Traceback (most recent call last):
File "X:\jnk.py", line 47, in <module>
print st.tag(str)
File "X:\Anaconda2\lib\site-packages\nltk\tag\stanford.py", line 66, in tag
return sum(self.tag_sents([tokens]), [])
File "X:\Anaconda2\lib\site-packages\nltk\tag\stanford.py", line 89, in tag_sents
stdout=PIPE, …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,要求我使用nltk和python标记标记.所以我想用这个.但想出了一些问题.我经历了很多其他已经问过的问题和其他论坛,但我仍然无法解决这个问题.问题是当我尝试执行以下操作时:
from nltk.tag import StanfordPOSTagger
st = StanfordPOSTagger('english-bidirectional-distsim.tagger')
我得到以下内容:
Traceback (most recent call last):
`File "<pyshell#13>", line 1, in <module>
st = StanfordPOSTagger('english-bidirectional-distsim.tagger')`
`File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.egg\nltk\tag\stanford.py", line 131, in __init__
super(StanfordPOSTagger, self).__init__(*args, **kwargs)`
`File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.egg\nltk\tag\stanford.py", line 53, in __init__
verbose=verbose)`
`File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.egg\nltk\internals.py", line 652, in find_jar
searchpath, url, verbose, is_regex))`
`File "C:\Users\MY3\AppData\Local\Programs\Python\Python35-32\lib\site-packages\nltk-3.1-py3.5.egg\nltk\internals.py", line 647, in find_jar_iter
raise LookupError('\n\n%s\n%s\n%s' % (div, msg, div))`
LookupError:
===========================================================================
NLTK was unable to find stanford-postagger.jar! Set the CLASSPATH
environment variable.
===========================================================================
Run Code Online (Sandbox Code Playgroud)
我已经设置了CLASSPATH - C:\Users\MY3\Desktop\nltk\stanford\stanford-postagger.jar
我也试过了C:\Users\MY3\Desktop\nltk\stanford …