我正在尝试使用斯坦福NLP检查文本样本的拼写准确性.它只是文本的一个度量标准,而不是过滤器或任何东西,所以只要错误是一致的,如果它稍微关闭它就没问题了.
我的第一个想法是检查词典是否知道这个词:
private static LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz");
@Analyze(weight=25, name="Spelling")
public double spelling() {
int result = 0;
for (List<? extends HasWord> list : sentences) {
for (HasWord w : list) {
if (! lp.getLexicon().isKnown(w.word())) {
System.out.format("misspelled: %s\n", w.word());
result++;
}
}
}
return result / sentences.size();
}
Run Code Online (Sandbox Code Playgroud)
但是,这会产生很多误报:
misspelled: Sincerity
misspelled: Sisyphus
misspelled: Sisyphus
misspelled: fidelity
misspelled: negates
misspelled: gods
misspelled: henceforth
misspelled: atom
misspelled: flake
misspelled: Sisyphus
misspelled: Camus
misspelled: foandf
misspelled: foandf
misspelled: babby
misspelled: formd …Run Code Online (Sandbox Code Playgroud) 我是NLP的新手,并试图找出命名实体识别器如何注释命名实体.我正在试验斯坦福NER工具包.当我在标准的更正式的数据集上使用NER时,其中遵循所有命名约定来表示命名实体,例如在新闻专线或新闻博客中,NER正确地注释实体.但是,当我使用非正式数据集(例如twitter)运行NER时,命名实体可能没有按原样大写,NER不会对实体进行注释.我使用的分类器是3-CRF序列化分类器.任何人都可以告诉我如何让NER识别小写实体?关于如何破解NER以及在何处进行改进的任何有用建议都非常感谢.在此先感谢您的帮助.
我下载了stanford nlp,当我运行他们网站上给出的代码时.
我在这一行中收到错误:
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
Run Code Online (Sandbox Code Playgroud)
错误如下:
Exception in thread "main" java.lang.NoClassDefFoundError: nu/xom/Node
at sample1.main(sample1.java:35)
Caused by: java.lang.ClassNotFoundException: nu.xom.Node
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
Run Code Online (Sandbox Code Playgroud)
我使用eclipse,我应该做一些配置吗?请帮帮我!
我必须在基于桌面的java应用程序中实现自动建议功能.要求如下:
用户将给出一个句子作为输入,我必须返回下一个可能Part-Of-Speech的建议.例如:
1.UserInput:迈克希望 Suggestions:[阅读,玩耍,玩乐,学习,编码,等等]
2. UserInput:迈克有 Suggestions:[阅读,Naboo N-1星际战斗机,马,...等]
这是这个问题的重复,但这个是针对Android的.这可以通过使用一些NLP库来完成,如Stanford-NLP或OpenNLP等吗?如果您需要更多细节,请告诉我.
谢谢!
试图找出一个句子中是否包含祈使语(例如,将“单击下面”归为祈使语,而将“这里有一些信息”归为否)。
例如斯坦福解析器,这可能吗?作为参考,主站点(http://nlp.stanford.edu/software/lex-parser.shtml)指示“对命令的识别有所改进”,但是从属手册未提供 http:// nlp的要求。 stanford.edu/software/dependencies_manual.pdf)
另外,还有另一种可行的方法吗?
所以我得到了"标准"斯坦福分析师的工作,感谢危险89对前一篇文章斯坦福分析师和NLTK的回答.
但是,我现在正试图让依赖解析器工作,似乎前一个链接中突出显示的方法不再有效.这是我的代码:
import nltk
import os
java_path = "C:\\Program Files\\Java\\jre1.8.0_51\\bin\\java.exe"
os.environ['JAVAHOME'] = java_path
from nltk.parse import stanford
os.environ['STANFORD_PARSER'] = 'path/jar'
os.environ['STANFORD_MODELS'] = 'path/jar'
parser = stanford.StanfordDependencyParser(model_path="path/jar/englishPCFG.ser.gz")
sentences = parser.raw_parse_sents(nltk.sent_tokenize("The iPod is expensive but pretty."))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:'module'对象没有属性'StanfordDependencyParser'
我唯一改变的是"StanfordParser"中的"StanfordDependencyParser".任何想法我怎么能让这个工作?
我还尝试了Stanford Neural Dependency解析器,如下面的文档中所示:http://www.nltk.org/_modules/nltk/parse/stanford.html
这个也不起作用.
非常新的NLTK.提前感谢任何有用的输入.
我正在尝试使用Stanford POS标记器和NER编写关键字提取程序.对于关键字提取,我只对专有名词感兴趣.这是基本方法
示例代码
docText="'Jack Frost works for Boeing Company. He manages 5 aircraft and their crew in London"
words = re.split("\W+",docText)
stops = set(stopwords.words("english"))
#remove stop words from the list
words = [w for w in words if w not in stops and len(w) > 2]
# Stemming
pstem = PorterStemmer()
words = [pstem.stem(w) for w in words]
nounsWeWant = set(['NN' ,'NNS', 'NNP', 'NNPS'])
finalWords = []
stn = StanfordNERTagger('english.all.3class.distsim.crf.ser.gz')
stp = StanfordPOSTagger('english-bidirectional-distsim.tagger')
for …Run Code Online (Sandbox Code Playgroud) 我想创建一个自定义的NER模型.这就是我做的:
培训数据(stanford-ner.tsv):
Hello O
! O
My O
name O
is O
Damiano PERSON
. O
Run Code Online (Sandbox Code Playgroud)
属性(stanford-ner.prop):
trainFile = stanford-ner.tsv
serializeTo = ner-model.ser.gz
map = word=0,answer=1
maxLeft=1
useClassFeature=true
useWord=true
useNGrams=true
noMidNGrams=true
maxNGramLeng=6
usePrev=true
useNext=true
useDisjunctive=true
useSequences=true
usePrevSequences=true
useTypeSeqs=true
useTypeSeqs2=true
useTypeySequences=true
wordShape=chris2useLC
useGazettes=true
gazette=gazzetta.txt
cleanGazette=true
Run Code Online (Sandbox Code Playgroud)
GAZZETTE gazzetta.txt):
PERSON John
PERSON Andrea
Run Code Online (Sandbox Code Playgroud)
我通过命令行构建模型:
java -classpath "stanford-ner.jar:lib/*" edu.stanford.nlp.ie.crf.CRFClassifier -prop stanford-ner.prop
Run Code Online (Sandbox Code Playgroud)
并测试:
java -classpath "stanford-ner.jar:lib/*" edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier ner-model.ser.gz -textFile test.txt
Run Code Online (Sandbox Code Playgroud)
我用以下文本做了两次测试:
>>> TEST 1 <<<
文:你好!我叫达米亚诺,这是一个值得测试的假文本.
OUTPUT Hello/O!/ O我/ O名称/ O是/ O …
运行CoreNLP时经常会在stderr中看到这个:
Cannot find node in dependency for word said
Run Code Online (Sandbox Code Playgroud)
对于将引号连接到扬声器的动词来说,这似乎发生了,这对于我的应用程序,引用提取/表征非常重要.
(编辑)这个警告在实践中意味着什么?这是一个已知问题,是否有修复?
我知道CoreNLP中提供的tokenizer选项,我知道如何在标准版本中设置它们.
有没有办法untokenizable=noneKeep在使用Simple CoreNLP接口时传递选项,例如?