-
Notifications
You must be signed in to change notification settings - Fork 223
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
78d8379
commit 2befef1
Showing
15 changed files
with
1,504 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file added
BIN
+7.15 MB
... Language Processing/Week3/Distributional semantics bee and honey vs bee an bumblebee.pdf
Binary file not shown.
Binary file added
BIN
+8.9 MB
Natural Language Processing/Week3/Explicit and implicit matrix factorization.pdf
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added
BIN
+445 KB
Natural Language Processing/Week3/QUIZ Word and sentence embeddings.pdf
Binary file not shown.
Binary file not shown.
Binary file added
BIN
+10.9 MB
...l Language Processing/Week3/Topic modeling a way to navigate through text collections.pdf
Binary file not shown.
Binary file added
BIN
+6.36 MB
Natural Language Processing/Week3/Why words From character to sentence embeddings.pdf
Binary file not shown.
Binary file not shown.
Binary file added
BIN
+10.3 MB
Natural Language Processing/Week3/Word2vec and doc2vec (and how to evaluate them).pdf
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
import requests | ||
import json | ||
import numpy as np | ||
from collections import OrderedDict | ||
|
||
class Grader(object): | ||
def __init__(self): | ||
self.submission_page = 'https://www.coursera.org/api/onDemandProgrammingScriptSubmissions.v1' | ||
self.assignment_key = '7DdYfMQFEeevjw7-W7Fr0A' | ||
self.parts = OrderedDict([('98mDT', 'Question2Vec'), | ||
('nc7RP', 'HitsCount'), | ||
('bNp90', 'DCGScore'), | ||
('3gRlQ', 'W2VTokenizedRanks'), | ||
('mX6wS', 'StarSpaceRanks')]) | ||
self.answers = {key: None for key in self.parts} | ||
|
||
@staticmethod | ||
def ravel_output(output): | ||
''' | ||
If student accidentally submitted np.array with one | ||
element instead of number, this function will submit | ||
this number instead | ||
''' | ||
if isinstance(output, np.ndarray) and output.size == 1: | ||
output = output.item(0) | ||
return output | ||
|
||
def submit(self, email, token): | ||
submission = { | ||
"assignmentKey": self.assignment_key, | ||
"submitterEmail": email, | ||
"secret": token, | ||
"parts": {} | ||
} | ||
for part, output in self.answers.items(): | ||
if output is not None: | ||
submission["parts"][part] = {"output": output} | ||
else: | ||
submission["parts"][part] = dict() | ||
request = requests.post(self.submission_page, data=json.dumps(submission)) | ||
response = request.json() | ||
if request.status_code == 201: | ||
print('Submitted to Coursera platform. See results on assignment page!') | ||
elif u'details' in response and u'learnerMessage' in response[u'details']: | ||
print(response[u'details'][u'learnerMessage']) | ||
else: | ||
print("Unknown response from Coursera: {}".format(request.status_code)) | ||
print(response) | ||
|
||
def status(self): | ||
print("You want to submit these parts:") | ||
for part_id, part_name in self.parts.items(): | ||
answer = self.answers[part_id] | ||
if answer is None: | ||
answer = '-'*10 | ||
print("Task {}: {}".format(part_name, answer[:100] + '...')) | ||
|
||
def submit_part(self, part, output): | ||
self.answers[part] = output | ||
print("Current answer for task {} is: {}".format(self.parts[part], output[:100] + '...')) | ||
|
||
def submit_tag(self, tag, output): | ||
part_id = [k for k, v in self.parts.items() if v == tag] | ||
if len(part_id) != 1: | ||
raise RuntimeError('cannot match tag with part_id: found {} matches'.format(len(part_id))) | ||
part_id = part_id[0] | ||
self.submit_part(part_id, str(self.ravel_output(output))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import re | ||
from nltk.corpus import stopwords | ||
|
||
REPLACE_BY_SPACE_RE = re.compile('[/(){}\[\]\|@,;]') | ||
GOOD_SYMBOLS_RE = re.compile('[^0-9a-z #+_]') | ||
STOPWORDS = set(stopwords.words('english')) | ||
def text_prepare(text): | ||
text = text.lower() | ||
text = REPLACE_BY_SPACE_RE.sub(' ', text) | ||
text = GOOD_SYMBOLS_RE.sub('', text) | ||
text = ' '.join([x for x in text.split() if x and x not in STOPWORDS]) | ||
return text.strip() | ||
|
||
def array_to_string(arr): | ||
return '\n'.join(str(num) for num in arr) | ||
|
||
def matrix_to_string(matrix): | ||
return '\n'.join('\t'.join(str(num) for num in line) for line in matrix) |
Oops, something went wrong.