Stanford nlp for python

前端 未结 9 1224
野的像风
野的像风 2020-11-29 17:41

All I want to do is find the sentiment (positive/negative/neutral) of any given string. On researching I came across Stanford NLP. But sadly its in Java. Any ideas on how ca

相关标签:
9条回答
  • 2020-11-29 18:27

    Native Python implementation of NLP tools from Stanford

    Recently Stanford has released a new Python packaged implementing neural network (NN) based algorithms for the most important NLP tasks:

    • tokenization
    • multi-word token (MWT) expansion
    • lemmatization
    • part-of-speech (POS) and morphological features tagging
    • dependency parsing

    It is implemented in Python and uses PyTorch as the NN library. The package contains accurate models for more than 50 languages.

    To install you can use PIP:

    pip install stanfordnlp
    

    To perform basic tasks you can use native Python interface with many NLP algorithms:

    import stanfordnlp
    
    stanfordnlp.download('en')   # This downloads the English models for the neural pipeline
    nlp = stanfordnlp.Pipeline() # This sets up a default neural pipeline in English
    doc = nlp("Barack Obama was born in Hawaii.  He was elected president in 2008.")
    doc.sentences[0].print_dependencies()
    

    EDIT:

    So far, the library does not support sentiment analysis, yet I'm not deleting the answer, since it directly answers the "Stanford nlp for python" part of the question.

    0 讨论(0)
  • 2020-11-29 18:31

    I also faced similar situation. Most of my projects are in Python and sentiment part is Java. Luckily it's quite easy to lean how to use the stanford CoreNLP jar.

    Here is one of my scripts and you can download jars and run it.

    import java.util.List;
    import java.util.Properties;
    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.SentimentAnnotatedTree;
    import edu.stanford.nlp.trees.Tree;
    import edu.stanford.nlp.util.ArrayCoreMap;
    import edu.stanford.nlp.util.CoreMap;
    
    public class Simple_NLP {
    static StanfordCoreNLP pipeline;
    
        public static void init() {
            Properties props = new Properties();
            props.setProperty("annotators", "tokenize, ssplit, parse, sentiment");
            pipeline = new StanfordCoreNLP(props);
        }
    
        public static String findSentiment(String tweet) {
            String SentiReturn = "";
            String[] SentiClass ={"very negative", "negative", "neutral", "positive", "very positive"};
    
            //Sentiment is an integer, ranging from 0 to 4. 
            //0 is very negative, 1 negative, 2 neutral, 3 positive and 4 very positive.
            int sentiment = 2;
    
            if (tweet != null && tweet.length() > 0) {
                Annotation annotation = pipeline.process(tweet);
    
                List<CoreMap> sentences = annotation.get(CoreAnnotations.SentencesAnnotation.class);
                if (sentences != null && sentences.size() > 0) {
    
                    ArrayCoreMap sentence = (ArrayCoreMap) sentences.get(0);                
                    Tree tree = sentence.get(SentimentAnnotatedTree.class);  
                    sentiment = RNNCoreAnnotations.getPredictedClass(tree);             
                    SentiReturn = SentiClass[sentiment];
                }
            }
            return SentiReturn;
        }
    
    }
    
    0 讨论(0)
  • 2020-11-29 18:33

    Right now they have STANZA.

    https://stanfordnlp.github.io/stanza/

    Release History Note that prior to version 1.0.0, the Stanza library was named as “StanfordNLP”. To install historical versions prior to to v1.0.0, you’ll need to run pip install stanfordnlp.

    So, it confirms that Stanza is the full python version of stanford NLP.

    0 讨论(0)
提交回复
热议问题