你的位置:欧美黄瓜视频在线观看_呦男呦女视频精品导航_少妇苏霞白洁刺激A片_美女被强奷到高潮免费_强奷乱码中文字幕在线_久久青青草原一区二区_变态乱另类仑小说专区 > 日本很黄的免费A片 >


又黄又舒服又刺激视频达成一个NlpPipeline类

发布日期:2022-09-23 05:27    点击次数:139


色综合色妞在线视频又黄又舒服又刺激视频

积极的? 颓废的? 中性的? 使用斯坦福 CoreNLP 组件以及几行代码便可对句子进行分析。

本文先容何如使用集成到斯坦福 CoreNLP(一个用于当然言语料理的开源库)中的豪情器具在 Java 中达成此类任务。

斯坦福 CoreNLP 豪情分类器

要推行豪情分析,您需要一个豪情分类器,这是一种不错凭证从试验数据围聚学习的运筹帷幄来识别豪情信息的器具。

在斯坦福 CoreNLP 中,豪情分类器建造在递归神经鸠集 (RNN) 深度学习模子之上,该模子在斯坦福豪情树库 (SST) 上进行试验。

SST 数据集是一个带有豪情标签的语料库,从数千个使用的句子中推导出每个句法上可能的短语,从而允许拿获文本中豪情的组成后果。苟简来说,这允许模子凭证单词何如组成短语的含义来识别心情,而不单是是通过孤赶快评估单词。

为了更好地了解 SST 数据集的结构,您可从斯坦福 CoreNLP 豪情分析页面下载数据集文献。

在 Java 代码中,Stanford CoreNLP 豪情分类器使用如下。

最初,您通过添加推行豪情分析所需的扫视器(举例标记化、拆分、领路和豪情)来构建文本料理管道。 就斯坦福 CoreNLP 而言,扫视器是一个对扫视对象进行操作的接口,其中后者暗意文档中的一段文本。 举例,需要使用 ssplit 扫视器将标记序列拆分为句子。

斯坦福 CoreNLP 以每个句子为基础缠绵心情。 因此,将文天职割成句子的经由历久除名运用豪情扫视器。

一朝文本被分红句子,领路扫视器就会推行句法依赖领路,为每个句子生成一个依赖暗意。 然后,豪情扫视器料理这些依赖暗意,将它们与底层模子进行比拟,以构建带有每个句子的豪情标签(扫视)的二值化树。

苟简来说,树的节点由输入句子的标记细则,并包含扫视,换取从句子导出的系数短语的从颠倒颓废到颠倒积极的五个豪情类别中的运筹帷幄类别。 基于这些运筹帷幄,豪情扫视器缠绵通盘句子的豪情。

建树斯坦福 CoreNLP

在脱手使用斯坦福 CoreNLP 之前,您需要进行以下建树:

要运行斯坦福 CoreNLP,您需要 Java 1.8 或更高版块。

下载 Stanford CoreNLP 包并将该包解压缩到您机器上的腹地文献夹中。

下载地址:

https://nlp.stanford.edu/software/stanford-corenlp-latest.zip

本文以将上述代码解压到如下目次为例:

c:/softwareInstall/corenlp/stanford-corenlp-4.3.2

完成上述关节后, 一级您就不错创建运行斯坦福 CoreNLP 管道来料理文本的 Java 次序了。

最初新建一个maven技俩,并手动将stanford-corenlp-4.3.2添加到Libraries中:

 

使用深度学习模子在 Java 中推行文本豪情分析

 

在以下示例中,您将达成一个苟简的 Java 次序,该次序运行斯坦福 CoreNLP 管道,以对包含多个句子的文本进行豪情分析。

最初,达成一个NlpPipeline类,该类提供运回荡管道的形貌和使用此管道将提交的文本拆分为句子然后对每个句子的豪情进行分类的形貌。 底下是NlpPipeline类代码:

 

package com.zh.ch.corenlp;  import edu.stanford.nlp.ling.CoreAnnotations; import edu.stanford.nlp.neural.rnn.RNNCoreAnnotations; import edu.stanford.nlp.pipeline.Annotation; import edu.stanford.nlp.pipeline.StanfordCoreNLP; import edu.stanford.nlp.sentiment.SentimentCoreAnnotations; import edu.stanford.nlp.trees.Tree; import edu.stanford.nlp.util.CoreMap;  import java.util.Properties;  public class NlpPipeline {     StanfordCoreNLP pipeline = null;     public  void init()     {         Properties props = new Properties();         props.setProperty("annotators", "tokenize, ssplit, parse, sentiment");         pipeline = new StanfordCoreNLP(props);     }     public void estimatingSentiment(String text)     {         int sentimentInt;         String sentimentName;         Annotation annotation = pipeline.process(text);         for(CoreMap sentence : annotation.get(CoreAnnotations.SentencesAnnotation.class))         {             Tree tree = sentence.get(SentimentCoreAnnotations.SentimentAnnotatedTree.class);             sentimentInt = RNNCoreAnnotations.getPredictedClass(tree);             sentimentName = sentence.get(SentimentCoreAnnotations.SentimentClass.class);             System.out.println(sentimentName + "\t" + sentimentInt + "\t" + sentence);         }     } } 

 

init() 形貌运回荡StanfordCoreNLP 管道,它还运回荡使用该豪情器具所需的分词器、依赖领路器和句子拆分器。 要运回荡管道,请将带有相应扫视器列表的 Properties 对象传递给 StanfordCoreNLP() 构造函数。 这将创建一个定制的管道,准备好对文本推行豪情分析。

在NlpPipeline类的estimatingSentiment()形貌中,欧美成人做真人爱视频调用之前创建的管道对象的process()形貌,传入文本进行料理。 process() 形貌复返一个扫视对象,该对象存储对提交的文本的分析。

接下来,迭代扫视对象,在每次迭代中得回一个句子级 CoreMap 对象。关于这些对象中的每一个,获取一个包含用于细则底层句子心情的心情扫视的 Tree 对象。

将 Tree 对象传递给 RNNCoreAnnotations 类的 getPredictedClass() 形貌,以提炼对应句子的运筹帷幄心情的编号代码。然后,获取运筹帷幄心情的称呼并打印戒指。

要测试上述功能,请使用调用 init() 形貌的 main() 形貌达成一个类,然后调用 nlpPipeline 类的 estimatingSentiment() 形貌,将示例文本传递给后者。

在以下达成中,为了苟简起见,径直指定text文本。示例句子旨在涵盖斯坦福 CoreNLP 可用的通盘心情评分限制:颠倒积极、积极、中立、颓废和颠倒颓废。

 

package com.zh.ch.corenlp;  import java.io.FileReader; import java.io.IOException;  public class Main {          static NlpPipeline nlpPipeline = null;      public static void processText(String text) {         nlpPipeline.estimatingSentiment(text);     }      public static void main(String[] args) {         String text = "This is an excellent book. I enjoy reading it. I can read on Sundays. Today is only Tuesday. Can't wait for next Sunday. The working week is unbearably long. It's awful.";         nlpPipeline  = new NlpPipeline();         nlpPipeline.init();         processText(text);     }  } 

 

推行戒指:

 

使用深度学习模子在 Java 中推行文本豪情分析

 

分析在线客户指摘

正如您从前边的示例中了解到的,Stanford CoreNLP 不错复返句子的心情。 干系词,有好多用例需要分析多段文本的心情,每段文本可能包含不啻一个句子。 举例,您可能想要分析来自电子商务网站的推文或客户指摘的心情。

要使用斯坦福 CoreNLP 缠绵多句文本样本的心情,您可能会使用几种不同的技能。

在料理推文时,您可能会分析推文中每个句子的心情,若是有一些正面或负面的句子,您不错离别对通盘推文进行名次,忽略带有中性心情的句子。 若是推文中的系数(或果真系数)句子都是中性的,则该推文不错被列为中性。

干系词,偶而您致使无须分析每个句子来揣度通盘文本的心情。 举例,在分析客户指摘时,您不错依赖他们的标题,标题常常由一个句子组成。

要完成以下示例,您需要一组客户指摘。 您不错使用本文随附的 NlpBookReviews.csv 文献中的指摘。 该文献包含在 Amazon Review Export 的匡助下从 Amazon 网页下载的一组本体指摘,这是一个 Google Chrome 浏览器彭胀次序,允许您将居品指摘偏激标题和评级下载到逗号分隔值 (CSV) 文献中 . (您不错使用该器具探索一组不同的指摘以进行分析。)

将下述代码添加到NlpPipeline中

 

public String findSentiment(String text) {         int sentimentInt = 2;         String sentimentName = "NULL";         if (text != null && text.length() > 0) {             Annotation annotation = pipeline.process(text);             CoreMap sentence = annotation                     .get(CoreAnnotations.SentencesAnnotation.class).get(0);             Tree tree = sentence                     .get(SentimentCoreAnnotations.SentimentAnnotatedTree.class);             sentimentInt = RNNCoreAnnotations.getPredictedClass(tree);             sentimentName = sentence.get(SentimentCoreAnnotations.SentimentClass.class);         }         return sentimentName;     } 

 

您可能会郑重到,上头的代码肖似于上一节中界说的 estimatingSentiment() 形貌中的代码。 惟一的赫然区别是此次您莫得迭代输入文本中的句子。 相背,您只会得到第一句话,因为在大精深情况下,指摘的标题由一个句子组成。

下述代码将从 CSV 文献中读取指摘并将它们传递给新创建的 findSentiment() 进行料理,如下所示:

 

public static void processCsvComment(String csvCommentFilePath) {         try (CSVReader reader = new CSVReaderBuilder(new FileReader(csvCommentFilePath)).withSkipLines(1).build())         {             String[] row;             while ((row = reader.readNext()) != null) {                 System.out.println("Review: " + row[1] + "\t" + " Amazon rating: " + row[4] + "\t" + " Sentiment: " + nlpPipeline.findSentiment(row[1]));             }         }         catch (IOException | CsvValidationException e) {             e.printStackTrace();         }     } 

 

推行戒指:

 

使用深度学习模子在 Java 中推行文本豪情分析

 

完好代码:

NlpPipeline.java

 

package com.zh.ch.corenlp;  import edu.stanford.nlp.ling.CoreAnnotations; import edu.stanford.nlp.neural.rnn.RNNCoreAnnotations; import edu.stanford.nlp.pipeline.Annotation; import edu.stanford.nlp.pipeline.StanfordCoreNLP; import edu.stanford.nlp.sentiment.SentimentCoreAnnotations; import edu.stanford.nlp.trees.Tree; import edu.stanford.nlp.util.CoreMap;  import java.util.Properties;  public class NlpPipeline {     StanfordCoreNLP pipeline = null;     public  void init() {         Properties props = new Properties();         props.setProperty("annotators", "tokenize, ssplit, parse, sentiment");         pipeline = new StanfordCoreNLP(props);     }     public void estimatingSentiment(String text) {         int sentimentInt;         String sentimentName;         Annotation annotation = pipeline.process(text);         for(CoreMap sentence : annotation.get(CoreAnnotations.SentencesAnnotation.class))         {             Tree tree = sentence.get(SentimentCoreAnnotations.SentimentAnnotatedTree.class);             sentimentInt = RNNCoreAnnotations.getPredictedClass(tree);             sentimentName = sentence.get(SentimentCoreAnnotations.SentimentClass.class);             System.out.println(sentimentName + "\t" + sentimentInt + "\t" + sentence);         }     }      public String findSentiment(String text) {         int sentimentInt = 2;         String sentimentName = "NULL";         if (text != null && text.length() > 0) {             Annotation annotation = pipeline.process(text);             CoreMap sentence = annotation                     .get(CoreAnnotations.SentencesAnnotation.class).get(0);             Tree tree = sentence                     .get(SentimentCoreAnnotations.SentimentAnnotatedTree.class);             sentimentInt = RNNCoreAnnotations.getPredictedClass(tree);             sentimentName = sentence.get(SentimentCoreAnnotations.SentimentClass.class);         }         return sentimentName;     } } 

 

Main.java

 

package com.zh.ch.corenlp;  import com.opencsv.CSVReader; import com.opencsv.CSVReaderBuilder; import com.opencsv.exceptions.CsvValidationException;  import java.io.FileReader; import java.io.IOException;  public class Main {     static NlpPipeline nlpPipeline = null;      public static void processCsvComment(String csvCommentFilePath) {         try (CSVReader reader = new CSVReaderBuilder(new FileReader(csvCommentFilePath)).withSkipLines(1).build())         {             String[] row;             while ((row = reader.readNext()) != null) {                 System.out.println("Review: " + row[1] + "\t" + " Amazon rating: " + row[4] + "\t" + " Sentiment: " + nlpPipeline.findSentiment(row[1]));             }         }         catch (IOException | CsvValidationException e) {             e.printStackTrace();         }     }      public static void processText(String text) {         nlpPipeline.estimatingSentiment(text);     }      public static void main(String[] args) {         String text = "This is an excellent book. I enjoy reading it. I can read on Sundays. Today is only Tuesday. Can't wait for next Sunday. The working week is unbearably long. It's awful.";         nlpPipeline  = new NlpPipeline();         nlpPipeline.init(); //        processText(text);         processCsvComment("src/main/resources/NlpBookReviews.csv");     } } 

 

 



    热点资讯

    相关资讯