Doc2vec '-' symbol occurrence












1












$begingroup$


Currently working on resume parser and struggled with embedding words with '-' symbols in them. Such as 'IT-manager'.



Vector representations of these words are incorrectly classified by doc2vec.




['it-manager']
[('salary', 0.23328335583209991), ('responsibilites', 0.22327110171318054), ('schedule', 0.14869527518749237), ('position', 0.12755176424980164)]




But when I remove '-' symbol, it is tokenized and classified right.




['it', 'manager']
[('position', 0.9306046962738037), ('schedule', 0.6630333662033081), ('responsibilites', 0.6081600189208984), ('salary', 0.5934453010559082)]




How do you work with such data properly? For this kind of task, I guess, it is better to exclude the symbol. But there may be a way to tell Doc2vec to treat these words like two different ones. Or perhaps tell the word_tokenizer to tokenize them in this fashion?










share|improve this question











$endgroup$

















    1












    $begingroup$


    Currently working on resume parser and struggled with embedding words with '-' symbols in them. Such as 'IT-manager'.



    Vector representations of these words are incorrectly classified by doc2vec.




    ['it-manager']
    [('salary', 0.23328335583209991), ('responsibilites', 0.22327110171318054), ('schedule', 0.14869527518749237), ('position', 0.12755176424980164)]




    But when I remove '-' symbol, it is tokenized and classified right.




    ['it', 'manager']
    [('position', 0.9306046962738037), ('schedule', 0.6630333662033081), ('responsibilites', 0.6081600189208984), ('salary', 0.5934453010559082)]




    How do you work with such data properly? For this kind of task, I guess, it is better to exclude the symbol. But there may be a way to tell Doc2vec to treat these words like two different ones. Or perhaps tell the word_tokenizer to tokenize them in this fashion?










    share|improve this question











    $endgroup$















      1












      1








      1





      $begingroup$


      Currently working on resume parser and struggled with embedding words with '-' symbols in them. Such as 'IT-manager'.



      Vector representations of these words are incorrectly classified by doc2vec.




      ['it-manager']
      [('salary', 0.23328335583209991), ('responsibilites', 0.22327110171318054), ('schedule', 0.14869527518749237), ('position', 0.12755176424980164)]




      But when I remove '-' symbol, it is tokenized and classified right.




      ['it', 'manager']
      [('position', 0.9306046962738037), ('schedule', 0.6630333662033081), ('responsibilites', 0.6081600189208984), ('salary', 0.5934453010559082)]




      How do you work with such data properly? For this kind of task, I guess, it is better to exclude the symbol. But there may be a way to tell Doc2vec to treat these words like two different ones. Or perhaps tell the word_tokenizer to tokenize them in this fashion?










      share|improve this question











      $endgroup$




      Currently working on resume parser and struggled with embedding words with '-' symbols in them. Such as 'IT-manager'.



      Vector representations of these words are incorrectly classified by doc2vec.




      ['it-manager']
      [('salary', 0.23328335583209991), ('responsibilites', 0.22327110171318054), ('schedule', 0.14869527518749237), ('position', 0.12755176424980164)]




      But when I remove '-' symbol, it is tokenized and classified right.




      ['it', 'manager']
      [('position', 0.9306046962738037), ('schedule', 0.6630333662033081), ('responsibilites', 0.6081600189208984), ('salary', 0.5934453010559082)]




      How do you work with such data properly? For this kind of task, I guess, it is better to exclude the symbol. But there may be a way to tell Doc2vec to treat these words like two different ones. Or perhaps tell the word_tokenizer to tokenize them in this fashion?







      nlp word2vec word-embeddings nltk






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 2 days ago









      HFulcher

      9513




      9513










      asked 2 days ago









      GraygoodGraygood

      83




      83






















          2 Answers
          2






          active

          oldest

          votes


















          1












          $begingroup$

          gensim's Phrases module may also be helpful:



          from gensim.models import Phrases
          documents = [
          "the mayor of new york was there",
          "machine learning can be useful sometimes",
          "new york mayor was present"
          ]

          sentence_stream = [doc.split(" ") for doc in documents]

          bigram = Phrases(sentence_stream, min_count=1, threshold=2)

          sent = [u'the', u'mayor', u'of', u'new', u'york', u'was', u'there']
          print(bigram[sent])
          # Expected output:
          # [u'the', u'mayor', u'of', u'new_york', u'was', u'there']


          That code is from this other answer (I've copy-pasted it above for convenience).



          For more on the Phrases module, check this page out.






          share|improve this answer








          New contributor




          JordiCarrera 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$

            Typically you would want to remove any symbols that do not contribute to the meaning of a token. In the case of 'it-manager' by removing the - you do not affect the interpretation of the word negatively. I would suggest filtering your vocabulary to identify all the words with other symbols in and make a judgement on whether you can filter the symbols without affecting the interpretation of the word.



            You could do this using a regex filter such as:



            m = re.search(r'[^w]', <some string>)





            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
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f47080%2fdoc2vec-symbol-occurrence%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1












              $begingroup$

              gensim's Phrases module may also be helpful:



              from gensim.models import Phrases
              documents = [
              "the mayor of new york was there",
              "machine learning can be useful sometimes",
              "new york mayor was present"
              ]

              sentence_stream = [doc.split(" ") for doc in documents]

              bigram = Phrases(sentence_stream, min_count=1, threshold=2)

              sent = [u'the', u'mayor', u'of', u'new', u'york', u'was', u'there']
              print(bigram[sent])
              # Expected output:
              # [u'the', u'mayor', u'of', u'new_york', u'was', u'there']


              That code is from this other answer (I've copy-pasted it above for convenience).



              For more on the Phrases module, check this page out.






              share|improve this answer








              New contributor




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






              $endgroup$


















                1












                $begingroup$

                gensim's Phrases module may also be helpful:



                from gensim.models import Phrases
                documents = [
                "the mayor of new york was there",
                "machine learning can be useful sometimes",
                "new york mayor was present"
                ]

                sentence_stream = [doc.split(" ") for doc in documents]

                bigram = Phrases(sentence_stream, min_count=1, threshold=2)

                sent = [u'the', u'mayor', u'of', u'new', u'york', u'was', u'there']
                print(bigram[sent])
                # Expected output:
                # [u'the', u'mayor', u'of', u'new_york', u'was', u'there']


                That code is from this other answer (I've copy-pasted it above for convenience).



                For more on the Phrases module, check this page out.






                share|improve this answer








                New contributor




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






                $endgroup$
















                  1












                  1








                  1





                  $begingroup$

                  gensim's Phrases module may also be helpful:



                  from gensim.models import Phrases
                  documents = [
                  "the mayor of new york was there",
                  "machine learning can be useful sometimes",
                  "new york mayor was present"
                  ]

                  sentence_stream = [doc.split(" ") for doc in documents]

                  bigram = Phrases(sentence_stream, min_count=1, threshold=2)

                  sent = [u'the', u'mayor', u'of', u'new', u'york', u'was', u'there']
                  print(bigram[sent])
                  # Expected output:
                  # [u'the', u'mayor', u'of', u'new_york', u'was', u'there']


                  That code is from this other answer (I've copy-pasted it above for convenience).



                  For more on the Phrases module, check this page out.






                  share|improve this answer








                  New contributor




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






                  $endgroup$



                  gensim's Phrases module may also be helpful:



                  from gensim.models import Phrases
                  documents = [
                  "the mayor of new york was there",
                  "machine learning can be useful sometimes",
                  "new york mayor was present"
                  ]

                  sentence_stream = [doc.split(" ") for doc in documents]

                  bigram = Phrases(sentence_stream, min_count=1, threshold=2)

                  sent = [u'the', u'mayor', u'of', u'new', u'york', u'was', u'there']
                  print(bigram[sent])
                  # Expected output:
                  # [u'the', u'mayor', u'of', u'new_york', u'was', u'there']


                  That code is from this other answer (I've copy-pasted it above for convenience).



                  For more on the Phrases module, check this page out.







                  share|improve this answer








                  New contributor




                  JordiCarrera 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 answer



                  share|improve this answer






                  New contributor




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









                  answered 12 hours ago









                  JordiCarreraJordiCarrera

                  261




                  261




                  New contributor




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





                  New contributor





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






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























                      0












                      $begingroup$

                      Typically you would want to remove any symbols that do not contribute to the meaning of a token. In the case of 'it-manager' by removing the - you do not affect the interpretation of the word negatively. I would suggest filtering your vocabulary to identify all the words with other symbols in and make a judgement on whether you can filter the symbols without affecting the interpretation of the word.



                      You could do this using a regex filter such as:



                      m = re.search(r'[^w]', <some string>)





                      share|improve this answer









                      $endgroup$


















                        0












                        $begingroup$

                        Typically you would want to remove any symbols that do not contribute to the meaning of a token. In the case of 'it-manager' by removing the - you do not affect the interpretation of the word negatively. I would suggest filtering your vocabulary to identify all the words with other symbols in and make a judgement on whether you can filter the symbols without affecting the interpretation of the word.



                        You could do this using a regex filter such as:



                        m = re.search(r'[^w]', <some string>)





                        share|improve this answer









                        $endgroup$
















                          0












                          0








                          0





                          $begingroup$

                          Typically you would want to remove any symbols that do not contribute to the meaning of a token. In the case of 'it-manager' by removing the - you do not affect the interpretation of the word negatively. I would suggest filtering your vocabulary to identify all the words with other symbols in and make a judgement on whether you can filter the symbols without affecting the interpretation of the word.



                          You could do this using a regex filter such as:



                          m = re.search(r'[^w]', <some string>)





                          share|improve this answer









                          $endgroup$



                          Typically you would want to remove any symbols that do not contribute to the meaning of a token. In the case of 'it-manager' by removing the - you do not affect the interpretation of the word negatively. I would suggest filtering your vocabulary to identify all the words with other symbols in and make a judgement on whether you can filter the symbols without affecting the interpretation of the word.



                          You could do this using a regex filter such as:



                          m = re.search(r'[^w]', <some string>)






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 2 days ago









                          HFulcherHFulcher

                          9513




                          9513






























                              draft saved

                              draft discarded




















































                              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%2f47080%2fdoc2vec-symbol-occurrence%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

                              How to label and detect the document text images

                              Vallis Paradisi

                              Tabula Rosettana