×

stanford nlp

stanford nlp(NLP基础知识和综述)

admin admin 发表于2023-12-07 06:43:50 浏览50 评论0

抢沙发发表评论

其实stanford nlp的问题并不复杂,但是又很多的朋友都不太了解NLP基础知识和综述,因此呢,今天小编就来为大家分享stanford nlp的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

NLP基础知识和综述

一种流行的自然语言处理库、自带语料库、具有分类,分词等很多功能,国外使用者居多,类似中文的jieba处理库

为单词序列分配概率的模型就叫做语言模型。

通俗来说, 语言模型就是这样一个模型:对于任意的词序列,它能够计算出这个序列是一句话的概率。或者说语言模型能预测单词序列的下一个词是什么。

** n-gram Language Models **

N-gram模型是一种典型的统计语言模型(Language Model,LM),统计语言模型是一个基于概率的判别模型.统计语言模型把语言(词的序列)看作一个随机事件,并赋予相应的概率来描述其属于某种语言集合的可能性。给定一个词汇集合 V,对于一个由 V 中的词构成的序列S = ⟨w1, · · · , wT ⟩ ∈ Vn,统计语言模型赋予这个序列一个概率P(S),来衡量S 符合自然语言的语法和语义规则的置信度。用一句简单的话说,统计语言模型就是计算一个句子的概率大小的这种模型。

n-gram模型可以减轻单词序列没有在训练集中出现过而引起的问题,即数据稀疏问题

n-gram模型问题 对于n-gram模型的问题,这两页ppt说的很明白

N-gram模型基于这样一种假设,当前词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram(N=2)和三元的Tri-Gram(N=3).Bi-Gram所满足的假设是马尔科夫假设。

一般常用的N-Gram模型是Bi-Gram和Tri-Gram。分别用公式表示如下:

Bi-Gram:  P(T)=p(w1|begin) p(w2|w1) p(w3|w2)***p(wn|wn-1)

Tri-Gram:  P(T)=p(w1|begin1,begin2) p(w2|w1,begin1) p(w3|w2w1)***p(wn|wn-1,wn-2)

注意上面概率的计算方法:P(w1|begin)=以w1为开头的所有句子/句子总数;p(w2|w1)=w1,w2同时出现的次数/w1出现的次数。以此类推。

对于其中每项的计算举个例子:

由上可见Bi-Gram计算公式中的begin一般都是加个《s》标签。

N-gram存在的问题:

举一个小数量的例子进行辅助说明:假设我们有一个语料库(注意语料库),如下:

老鼠真讨厌,老鼠真丑,你爱老婆,我讨厌老鼠。

想要预测“我爱老”这一句话的下一个字。我们分别通过 bigram 和 trigram 进行预测。

1)通过 bigram,便是要对 P(w|老)进行计算,经统计,“老鼠”出现了3次,“老婆”出现了1次,通过最大似然估计可以求得P(鼠|老)=0.75,P(婆|老)=0.25, 因此我们通过 bigram 预测出的整句话为: 我爱老鼠。

2)通过 trigram,便是要对便是要对 P(w|爱老)进行计算,经统计,仅“爱老婆”出现了1次,通过最大似然估计可以求得 P(婆|爱 老)=1,因此我们通过trigram 预测出的整句话为: 我爱老婆。显然这种方式预测出的结果更加合理。

问题一:随着 n 的提升,我们拥有了更多的前置信息量,可以更加准确地预测下一个词。但这也带来了一个问题,当N过大时很容易出现这样的状况:某些n-gram从未出现过, 导致很多预测概率结果为0, 这就是稀疏问题。 实际使用中往往仅使用 bigram 或 trigram 。(这个问题可以通过平滑来缓解参考:

stanfordcorenlp 对 myeclipse版本有要求吗

首先,去oracle官网下载java-1.8,下载网址为:java下载,安装完成后。打开Eclipse,选择Window -》 Preferences -》 Java –》 Installed JREs 进行配置:点击窗体右边的“add”,然后添加一个“Standard VM”(应该是标准虚拟机的意思),然后点击“next”;在”JRE HOME”那一行点击右边的“Directory…”找到你java 的安装路径,比如“C:Program Files/Java/jdk1.8”这样你的Eclipse就已经支持jdk-1.8了。

stanford nlp linux怎么使用

通过Maven来使用后面两个dependency是导入model用的,支持的语言包括英语、汉语、法语、西班牙语和德语。默认情况下CoreNLP是支持英语的,其他语言的model需要独立下载。

 view plain copy

  • 《dependency》  

  • 《groupId》edu.stanford.nlp《/groupId》  

  • 《artifactId》stanford-corenlp《/artifactId》  

  • 《version》3.6.0《/version》  

  • 《/dependency》  

  • 《dependency》  

  • 《groupId》edu.stanford.nlp《/groupId》  

  • 《artifactId》stanford-corenlp《/artifactId》  

  • 《version》3.6.0《/version》  

  • 《classifier》models《/classifier》  

  • 《/dependency》  

  • 《!-- 解析中文需要下面这个包 --》  

  • 《dependency》   

  • 《groupId》edu.stanford.nlp《/groupId》   

  • 《artifactId》stanford-corenlp《/artifactId》   

  • 《version》3.6.0《/version》   

  • 《classifier》models-chinese《/classifier》  

  • 《/dependency》  

  • 《!-- 使用 Simple CoreNLP API 需要而外下面两个包 --》  

  • 《dependency》  

  • 《groupId》org.slf4j《/groupId》  

  • 《artifactId》slf4j-nop《/artifactId》  

  • 《version》1.7.12《/version》  

  • 《/dependency》  

  • 《dependency》  

  • 《groupId》com.google.protobuf《/groupId》  

  • 《artifactId》protobuf-java《/artifactId》  

  • 《version》3.1.0《/version》  

  • 《/dependency》  

  • 2.简单上手CoreNLP

  • 在代码中使用Simple CoreNLP API
  • 顾名思义,Simple CoreNLP API是相对于Stanford CoreNLP API比较简单的API操作方式。
  •  view plain copy

  • import edu.stanford.nlp.simple.*;  

  • public class SimpleCoreNLPDemo {  

  • public static void main(String args) {  

  • // Create a document. No computation is done yet.  

  • Document doc = new Document("add your text here! It can contain multiple sentences.");  

  • for (Sentence sent : doc.sentences()) {  // Will iterate over two sentences  

  • // We’re only asking for words -- no need to load any models yet  

  • System.out.println("The second word of the sentence ’" + sent + "’ is " + sent.word(1));  

  • // When we ask for the lemma, it will load and run the part of speech tagger  

  • System.out.println("The third lemma of the sentence ’" + sent + "’ is " + sent.lemma(2));  

  • // When we ask for the parse, it will load and run the parser  

  • System.out.println("The parse of the sentence ’" + sent + "’ is " + sent.parse());  

  • // ...  

  • }  

  • }  

  • }  

    希望对你有用!

怎么用scala调用stanford nlp jar包

21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。

OK,关于stanford nlp和NLP基础知识和综述的内容到此结束了,希望对大家有所帮助。