From 0fa3d393f0dc811d4a9550cafc6b741c680336b3 Mon Sep 17 00:00:00 2001 From: rounakdatta Date: Tue, 10 Jul 2018 20:09:01 +0530 Subject: [PATCH] algorithm errors fixed --- research/nlp_tests.ipynb | 24 ++++++++++++++---------- research/sentence_structure.ipynb | 8 ++++---- src/checker.py | 27 ++++++++++++++++++++++++++- test/sample1.docx | Bin 19358 -> 0 bytes test/sample2.docx | Bin 9211 -> 0 bytes 5 files changed, 44 insertions(+), 15 deletions(-) delete mode 100644 test/sample1.docx delete mode 100644 test/sample2.docx diff --git a/research/nlp_tests.ipynb b/research/nlp_tests.ipynb index bd13164..c9b00fd 100644 --- a/research/nlp_tests.ipynb +++ b/research/nlp_tests.ipynb @@ -387,20 +387,24 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " jumps \n", - " ________|______________ \n", - " | | over \n", - " | | | \n", - " | fox dog \n", - " | ____|_____ ___|____ \n", - " . The quick brown the lazy\n", + " is \n", + " _______________________________|_________ \n", + " | | is \n", + " | | ____________________________|________________________ \n", + " | | | | | | are | | \n", + " | | | | | | _________|_______ | | \n", + " | | | | | | | | easy | do \n", + " | | | | | | | | | | ___|_____ \n", + " | downside | | | | | programs use easy | analysis \n", + " | | | | | | | | | | | _____|_______ \n", + " . The that , , it because statistical to equally to the wrong\n", "\n" ] }, @@ -410,7 +414,7 @@ "[None]" ] }, - "execution_count": 1, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -422,7 +426,7 @@ "\n", "en_nlp = spacy.load('en')\n", "\n", - "doc = en_nlp(\"The quick brown fox jumps over the lazy dog.\")\n", + "doc = en_nlp(\"The downside is that, because statistical programs are easy to use, it is equally easy to do the wrong analysis.\")\n", "\n", "def to_nltk_tree(node):\n", " if node.n_lefts + node.n_rights > 0:\n", diff --git a/research/sentence_structure.ipynb b/research/sentence_structure.ipynb index ed5b1ae..11557ed 100644 --- a/research/sentence_structure.ipynb +++ b/research/sentence_structure.ipynb @@ -52,25 +52,25 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "cIrnmjio\n" + "nsubjauxrootpunct\n" ] } ], "source": [ "import spacy\n", "nlp = spacy.load('en_core_web_sm')\n", - "doc = nlp(\"I am going out with my family.\")\n", + "doc = nlp(\"We are walking.\")\n", "\n", "sent_struct = []\n", "for token in doc:\n", - " sent_struct.append(deps_dict[token.dep_.lower()])\n", + " sent_struct.append(token.dep_.lower())\n", "\n", "sentence_code = ''.join(sent_struct)\n", "print(sentence_code)" diff --git a/src/checker.py b/src/checker.py index 5a999e3..8a69b30 100644 --- a/src/checker.py +++ b/src/checker.py @@ -45,6 +45,8 @@ def decode_coding(code): return decoded_list def VB_VB_VB_correction(payload, raw_text, error_count): # correct errors of type has-been-walking + if 'been' not in raw_text.split(): + return raw_text, error_count if(payload.tag_[:2] != 'VB' and payload.tag_[:2] != 'NN' and payload.tag_[:2] != 'JJ'): return raw_text, error_count for ch in payload.children: @@ -92,14 +94,37 @@ def VB_VB_VB_correction(payload, raw_text, error_count): # correct errors of typ def VB_VB_correction(payload, raw_text, error_count): # correct errors of type is-walking OR has-cooked if(payload.tag_[:2] != 'VB'): return raw_text, error_count + nounBeforeVerb = False + nounAfterVerb = False + verbFound = False + if(payload.text == 'is' or payload.text == 'was' or payload.text == 'are' or payload.text == 'were'): + return raw_text, error_count + for ch in payload.children: + if(ch.tag_[:2] == 'VB'): + verbFound = True + if((not verbFound) and (ch.dep_ == 'nsubj')): + print(ch.lower_) + nounBeforeVerb = True + if(verbFound and (ch.dep_ == 'nsubj')): + nounAfterVerb = True + + ifHave = False + ifBeen = False if(ch.tag_[:2] == 'VB'): # this might need to be removed dummy, error_count = VB_VB_VB_correction(ch, raw_text, error_count) try: if(ch.lower_ == 'has') or (ch.lower_ == 'have') or (ch.lower_ == 'had'): + ifHave = True + if(ch.lower_ == 'been' or payload.text == "been"): + ifBeen = True + + if(ifHave and ifBeen): x = conjugate(verb=lemma(payload.text), tense=PAST+PARTICIPLE, mood=INDICATIVE, person=1, number=PL) - else: + elif(nounBeforeVerb and ((ch.lower_ == 'is') or (ch.lower_ == 'are') or (ch.lower_ == 'was') or (ch.lower_ == 'was') or (ch.lower_ == 'were'))): x = conjugate(verb=lemma(payload.text), tense=PRESENT, mood=INDICATIVE, aspect=PROGRESSIVE, person=1, number=PL) + else: + x = payload.text if(x != payload.text): error_count += 1 diff --git a/test/sample1.docx b/test/sample1.docx deleted file mode 100644 index 46e1751121520548802a59d54fd270db53de1e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19358 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 H|LK1K2!-#>