How to identify noun that refers to a person












0












$begingroup$


How do I use NLP to determine whether a common noun (as opposed to a proper noun or proper name) refers to a person? Word vectors seem promising, but my naive attempts to use the similarity score from Gensim's and spaCy's pre-trained models failed to rank "engineer" above "dog" or even an abstract concept like "effort".



Gensim:



import gensim.downloader as api
word_vectors = api.load("glove-wiki-gigaword-100")
for word in ('effort', 'dog', 'engineer'):
print(word, word_vectors.similarity(word, 'person'))

# effort 0.42303842
# dog 0.46886832
# engineer 0.32456854


spaCy:



import pandas as pd
import spacy
nlp = spacy.load('en_core_web_lg')

tokens = [nlp(x) for x in "effort dog engineer".split()]
person = nlp("person")
for token in tokens:
print(token, token.similarity(person))

# effort 0.32646408671423605
# dog 0.37567509921825676
# engineer 0.27926451418425996


If I need to train a model myself, how should I go about it?










share|improve this question







New contributor




bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$

















    0












    $begingroup$


    How do I use NLP to determine whether a common noun (as opposed to a proper noun or proper name) refers to a person? Word vectors seem promising, but my naive attempts to use the similarity score from Gensim's and spaCy's pre-trained models failed to rank "engineer" above "dog" or even an abstract concept like "effort".



    Gensim:



    import gensim.downloader as api
    word_vectors = api.load("glove-wiki-gigaword-100")
    for word in ('effort', 'dog', 'engineer'):
    print(word, word_vectors.similarity(word, 'person'))

    # effort 0.42303842
    # dog 0.46886832
    # engineer 0.32456854


    spaCy:



    import pandas as pd
    import spacy
    nlp = spacy.load('en_core_web_lg')

    tokens = [nlp(x) for x in "effort dog engineer".split()]
    person = nlp("person")
    for token in tokens:
    print(token, token.similarity(person))

    # effort 0.32646408671423605
    # dog 0.37567509921825676
    # engineer 0.27926451418425996


    If I need to train a model myself, how should I go about it?










    share|improve this question







    New contributor




    bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$















      0












      0








      0





      $begingroup$


      How do I use NLP to determine whether a common noun (as opposed to a proper noun or proper name) refers to a person? Word vectors seem promising, but my naive attempts to use the similarity score from Gensim's and spaCy's pre-trained models failed to rank "engineer" above "dog" or even an abstract concept like "effort".



      Gensim:



      import gensim.downloader as api
      word_vectors = api.load("glove-wiki-gigaword-100")
      for word in ('effort', 'dog', 'engineer'):
      print(word, word_vectors.similarity(word, 'person'))

      # effort 0.42303842
      # dog 0.46886832
      # engineer 0.32456854


      spaCy:



      import pandas as pd
      import spacy
      nlp = spacy.load('en_core_web_lg')

      tokens = [nlp(x) for x in "effort dog engineer".split()]
      person = nlp("person")
      for token in tokens:
      print(token, token.similarity(person))

      # effort 0.32646408671423605
      # dog 0.37567509921825676
      # engineer 0.27926451418425996


      If I need to train a model myself, how should I go about it?










      share|improve this question







      New contributor




      bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      How do I use NLP to determine whether a common noun (as opposed to a proper noun or proper name) refers to a person? Word vectors seem promising, but my naive attempts to use the similarity score from Gensim's and spaCy's pre-trained models failed to rank "engineer" above "dog" or even an abstract concept like "effort".



      Gensim:



      import gensim.downloader as api
      word_vectors = api.load("glove-wiki-gigaword-100")
      for word in ('effort', 'dog', 'engineer'):
      print(word, word_vectors.similarity(word, 'person'))

      # effort 0.42303842
      # dog 0.46886832
      # engineer 0.32456854


      spaCy:



      import pandas as pd
      import spacy
      nlp = spacy.load('en_core_web_lg')

      tokens = [nlp(x) for x in "effort dog engineer".split()]
      person = nlp("person")
      for token in tokens:
      print(token, token.similarity(person))

      # effort 0.32646408671423605
      # dog 0.37567509921825676
      # engineer 0.27926451418425996


      If I need to train a model myself, how should I go about it?







      nlp gensim






      share|improve this question







      New contributor




      bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 4 hours ago









      bongbangbongbang

      101




      101




      New contributor




      bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      bongbang is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          1 Answer
          1






          active

          oldest

          votes


















          0












          $begingroup$

          This problem is known as "coreference resslution" in NLP models.



          enter image description here



          There are two approached that might work here :




          1. Pre-trained coreference resolution models [For example : https://stanfordnlp.github.io/CoreNLP/coref.html and Spacy]. Though example code is in Java, similar Python wrappers are available for CoreNLP. Pre-trained models might be geared towards pronouns. If you have to train your own model, this page has HOWTO : https://stanfordnlp.github.io/CoreNLP/coref.html

          2. Dependency parsing (For example "Jane, my sister, wants to be an air hostess."). (Google Cloud, Spacy, CoreNLP)


          Output of : https://cloud.google.com/natural-language/



          In this case, parser is able to establish a relationship between tokens "sister" and "Jane".



          enter image description here






          share|improve this answer









          $endgroup$














            Your Answer





            StackExchange.ifUsing("editor", function () {
            return StackExchange.using("mathjaxEditing", function () {
            StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
            StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
            });
            });
            }, "mathjax-editing");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "557"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });






            bongbang is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f48839%2fhow-to-identify-noun-that-refers-to-a-person%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0












            $begingroup$

            This problem is known as "coreference resslution" in NLP models.



            enter image description here



            There are two approached that might work here :




            1. Pre-trained coreference resolution models [For example : https://stanfordnlp.github.io/CoreNLP/coref.html and Spacy]. Though example code is in Java, similar Python wrappers are available for CoreNLP. Pre-trained models might be geared towards pronouns. If you have to train your own model, this page has HOWTO : https://stanfordnlp.github.io/CoreNLP/coref.html

            2. Dependency parsing (For example "Jane, my sister, wants to be an air hostess."). (Google Cloud, Spacy, CoreNLP)


            Output of : https://cloud.google.com/natural-language/



            In this case, parser is able to establish a relationship between tokens "sister" and "Jane".



            enter image description here






            share|improve this answer









            $endgroup$


















              0












              $begingroup$

              This problem is known as "coreference resslution" in NLP models.



              enter image description here



              There are two approached that might work here :




              1. Pre-trained coreference resolution models [For example : https://stanfordnlp.github.io/CoreNLP/coref.html and Spacy]. Though example code is in Java, similar Python wrappers are available for CoreNLP. Pre-trained models might be geared towards pronouns. If you have to train your own model, this page has HOWTO : https://stanfordnlp.github.io/CoreNLP/coref.html

              2. Dependency parsing (For example "Jane, my sister, wants to be an air hostess."). (Google Cloud, Spacy, CoreNLP)


              Output of : https://cloud.google.com/natural-language/



              In this case, parser is able to establish a relationship between tokens "sister" and "Jane".



              enter image description here






              share|improve this answer









              $endgroup$
















                0












                0








                0





                $begingroup$

                This problem is known as "coreference resslution" in NLP models.



                enter image description here



                There are two approached that might work here :




                1. Pre-trained coreference resolution models [For example : https://stanfordnlp.github.io/CoreNLP/coref.html and Spacy]. Though example code is in Java, similar Python wrappers are available for CoreNLP. Pre-trained models might be geared towards pronouns. If you have to train your own model, this page has HOWTO : https://stanfordnlp.github.io/CoreNLP/coref.html

                2. Dependency parsing (For example "Jane, my sister, wants to be an air hostess."). (Google Cloud, Spacy, CoreNLP)


                Output of : https://cloud.google.com/natural-language/



                In this case, parser is able to establish a relationship between tokens "sister" and "Jane".



                enter image description here






                share|improve this answer









                $endgroup$



                This problem is known as "coreference resslution" in NLP models.



                enter image description here



                There are two approached that might work here :




                1. Pre-trained coreference resolution models [For example : https://stanfordnlp.github.io/CoreNLP/coref.html and Spacy]. Though example code is in Java, similar Python wrappers are available for CoreNLP. Pre-trained models might be geared towards pronouns. If you have to train your own model, this page has HOWTO : https://stanfordnlp.github.io/CoreNLP/coref.html

                2. Dependency parsing (For example "Jane, my sister, wants to be an air hostess."). (Google Cloud, Spacy, CoreNLP)


                Output of : https://cloud.google.com/natural-language/



                In this case, parser is able to establish a relationship between tokens "sister" and "Jane".



                enter image description here







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 17 mins ago









                Shamit VermaShamit Verma

                1,4291214




                1,4291214






















                    bongbang is a new contributor. Be nice, and check out our Code of Conduct.










                    draft saved

                    draft discarded


















                    bongbang is a new contributor. Be nice, and check out our Code of Conduct.













                    bongbang is a new contributor. Be nice, and check out our Code of Conduct.












                    bongbang is a new contributor. Be nice, and check out our Code of Conduct.
















                    Thanks for contributing an answer to Data Science Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    Use MathJax to format equations. MathJax reference.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f48839%2fhow-to-identify-noun-that-refers-to-a-person%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Ponta tanko

                    Tantalo (mitologio)

                    Erzsébet Schaár