diff --git a/README.md b/README.md index 5b9bd48..0665b6f 100644 --- a/README.md +++ b/README.md @@ -55,4 +55,20 @@ And tokensregex + semgrex ]} ``` +Supports proxies: +Create a dictionary and pass the dictionary to any of the methods as a keyword argument. Replace 0.0.0.0 with the proxy server's IP address. + +``` +>>> my_proxies = { + 'http': 0.0.0.0, + 'https': 0.0.0.0, +} + +>>> nlp.annotate(text, properties={ + 'annotators': 'tokenize,ssplit,pos,depparse,parse', + 'outputFormat': 'json' + }, + proxies=my_proxies) +``` + The code above is available in [example.py](example.py). diff --git a/pycorenlp/corenlp.py b/pycorenlp/corenlp.py index 6eb2175..eaa6ad9 100644 --- a/pycorenlp/corenlp.py +++ b/pycorenlp/corenlp.py @@ -7,7 +7,7 @@ def __init__(self, server_url): server_url = server_url[:-1] self.server_url = server_url - def annotate(self, text, properties=None): + def annotate(self, text, properties=None, proxies=None): assert isinstance(text, str) if properties is None: properties = {} @@ -16,7 +16,7 @@ def annotate(self, text, properties=None): # Checks that the Stanford CoreNLP server is started. try: - requests.get(self.server_url) + requests.get(self.server_url, proxies=proxies) except requests.exceptions.ConnectionError: raise Exception('Check whether you have started the CoreNLP server e.g.\n' '$ cd stanford-corenlp-full-2015-12-09/ \n' @@ -36,18 +36,18 @@ def annotate(self, text, properties=None): pass return output - def tokensregex(self, text, pattern, filter): - return self.regex('/tokensregex', text, pattern, filter) + def tokensregex(self, text, pattern, filter, proxies=None): + return self.regex('/tokensregex', text, pattern, filter, proxies) - def semgrex(self, text, pattern, filter): - return self.regex('/semgrex', text, pattern, filter) + def semgrex(self, text, pattern, filter, proxies=None): + return self.regex('/semgrex', text, pattern, filter, proxies) - def regex(self, endpoint, text, pattern, filter): + def regex(self, endpoint, text, pattern, filter, proxies=None): r = requests.get( self.server_url + endpoint, params={ 'pattern': pattern, 'filter': filter - }, data=text) + }, data=text, proxies=None) output = r.text try: output = json.loads(r.text)