Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update in python/directory for usage of bllipparser with python3 #41

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@ Contributors
- `Ben Swanson <https://github.com/chonger>`__
- Jenine Turner-Trauring
- `Jim White <https://github.com/jimwhite>`__

- `Patrick Claus <http://www.h-its.org/en/research/nlp/>`__

(and many others with helpful bug reports and questions!)
32 changes: 32 additions & 0 deletions python/CHANGES FOR PYTHON3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#AN EXPLANATION ON HOW CONVERTION FOR BLLIPPARSER TO PYTHON3 WAS DONE#

Downloaded source containing setup.py for bllipparser
Converted all *.py files to python3 with 2to3
did setup -> only with extensions for python
Copied generated .so files (Charniak and Johnson) to new python files
Checked that everything is converted to python3
downloaded fitting model
successfully tried for 1-best parsing

In RerankingParser.py, the following change was made to support 1-best parsing:
try:
parses = parser.parse(sentence.sentrep)
except RuntimeError:
parses = []
#nbest_list = NBestList(sentence, parses, sentence_id)
#if rerank:
# nbest_list.rerank(self)
#return nbest_list
return parses

Function call for bllipparser python3:
>>> from bllipparser_python3 import *
>>> rrp = RerankingParser.from_unified_model_dir('/somedirectory/models/WSJ/')
>>> sentence = rrp.parse('To Sherlock Holmes she is always THE woman.')[0][1]
>>> print(sentence)
(S1 (S (NP (NP (NNP To) (NNP Sherlock) (NNP Holmes)) (NP (PRP she))) (VP (VBZ is) (ADVP (RB always)) (NP (DT THE) (NN woman))) (. .)))
>>>

Fiddled with return states and checked that you get string or list object for iteration over top parsed sentences.

#QUICK AND DIRTY!!#
657 changes: 657 additions & 0 deletions python/bllipparser_python3/CharniakParser.py

Large diffs are not rendered by default.

196 changes: 196 additions & 0 deletions python/bllipparser_python3/JohnsonReranker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 2.0.11
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.





from sys import version_info
if version_info >= (2,6,0):
def swig_import_helper():
from os.path import dirname
import imp
fp = None
try:
fp, pathname, description = imp.find_module('_JohnsonReranker', [dirname(__file__)])
except ImportError:
import _JohnsonReranker
return _JohnsonReranker
if fp is not None:
try:
_mod = imp.load_module('_JohnsonReranker', fp, pathname, description)
finally:
fp.close()
return _mod
_JohnsonReranker = swig_import_helper()
del swig_import_helper
else:
import _JohnsonReranker
del version_info
def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
if (name == "thisown"): return self.this.own(value)
if (name == "this"):
if type(value).__name__ == 'SwigPyObject':
self.__dict__[name] = value
return
method = class_type.__swig_setmethods__.get(name,None)
if method: return method(self,value)
if (not static):
self.__dict__[name] = value
else:
raise AttributeError("You cannot add attributes to %s" % self)

def _swig_setattr(self,class_type,name,value):
return _swig_setattr_nondynamic(self,class_type,name,value,0)

def _swig_getattr(self,class_type,name):
if (name == "thisown"): return self.this.own()
method = class_type.__swig_getmethods__.get(name,None)
if method: return method(self)
raise AttributeError(name)

def _swig_repr(self):
try: strthis = "proxy of " + self.this.__repr__()
except: strthis = ""
return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

class SwigPyIterator:
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name)
def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined - class is abstract")
__repr__ = _swig_repr
__swig_destroy__ = _JohnsonReranker.delete_SwigPyIterator
__del__ = lambda self : None;
def value(self): return _JohnsonReranker.SwigPyIterator_value(self)
def incr(self, n=1): return _JohnsonReranker.SwigPyIterator_incr(self, n)
def decr(self, n=1): return _JohnsonReranker.SwigPyIterator_decr(self, n)
def distance(self, *args): return _JohnsonReranker.SwigPyIterator_distance(self, *args)
def equal(self, *args): return _JohnsonReranker.SwigPyIterator_equal(self, *args)
def copy(self): return _JohnsonReranker.SwigPyIterator_copy(self)
def __next__(self): return _JohnsonReranker.SwigPyIterator_next(self)
def __next__(self): return _JohnsonReranker.SwigPyIterator___next__(self)
def previous(self): return _JohnsonReranker.SwigPyIterator_previous(self)
def advance(self, *args): return _JohnsonReranker.SwigPyIterator_advance(self, *args)
def __eq__(self, *args): return _JohnsonReranker.SwigPyIterator___eq__(self, *args)
def __ne__(self, *args): return _JohnsonReranker.SwigPyIterator___ne__(self, *args)
def __iadd__(self, *args): return _JohnsonReranker.SwigPyIterator___iadd__(self, *args)
def __isub__(self, *args): return _JohnsonReranker.SwigPyIterator___isub__(self, *args)
def __add__(self, *args): return _JohnsonReranker.SwigPyIterator___add__(self, *args)
def __sub__(self, *args): return _JohnsonReranker.SwigPyIterator___sub__(self, *args)
def __iter__(self): return self
SwigPyIterator_swigregister = _JohnsonReranker.SwigPyIterator_swigregister
SwigPyIterator_swigregister(SwigPyIterator)

class RerankerError:
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, RerankerError, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, RerankerError, name)
__repr__ = _swig_repr
__swig_getmethods__["description"] = _JohnsonReranker.RerankerError_description_get
def __init__(self, *args):
this = _JohnsonReranker.new_RerankerError(*args)
try: self.this.append(this)
except: self.this = this
__swig_destroy__ = _JohnsonReranker.delete_RerankerError
__del__ = lambda self : None;
RerankerError_swigregister = _JohnsonReranker.RerankerError_swigregister
RerankerError_swigregister(RerankerError)

class NBestList:
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, NBestList, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, NBestList, name)
__repr__ = _swig_repr
def __len__(self): return _JohnsonReranker.NBestList___len__(self)
def __init__(self):
this = _JohnsonReranker.new_NBestList()
try: self.this.append(this)
except: self.this = this
__swig_destroy__ = _JohnsonReranker.delete_NBestList
__del__ = lambda self : None;
NBestList_swigregister = _JohnsonReranker.NBestList_swigregister
NBestList_swigregister(NBestList)


def readNBestList(*args):
return _JohnsonReranker.readNBestList(*args)
readNBestList = _JohnsonReranker.readNBestList
class RerankerModel:
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, RerankerModel, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, RerankerModel, name)
__repr__ = _swig_repr
__swig_setmethods__["maxid"] = _JohnsonReranker.RerankerModel_maxid_set
__swig_getmethods__["maxid"] = _JohnsonReranker.RerankerModel_maxid_get
def __init__(self, *args):
this = _JohnsonReranker.new_RerankerModel(*args)
try: self.this.append(this)
except: self.this = this
def scoreNBestList(self, *args): return _JohnsonReranker.RerankerModel_scoreNBestList(self, *args)
__swig_destroy__ = _JohnsonReranker.delete_RerankerModel
__del__ = lambda self : None;
RerankerModel_swigregister = _JohnsonReranker.RerankerModel_swigregister
RerankerModel_swigregister(RerankerModel)


def setOptions(*args):
return _JohnsonReranker.setOptions(*args)
setOptions = _JohnsonReranker.setOptions
class Weights:
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, Weights, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, Weights, name)
__repr__ = _swig_repr
def iterator(self): return _JohnsonReranker.Weights_iterator(self)
def __iter__(self): return self.iterator()
def __bool__(self): return _JohnsonReranker.Weights___nonzero__(self)
def __bool__(self): return _JohnsonReranker.Weights___bool__(self)
def __len__(self): return _JohnsonReranker.Weights___len__(self)
def pop(self): return _JohnsonReranker.Weights_pop(self)
def __getslice__(self, *args): return _JohnsonReranker.Weights___getslice__(self, *args)
def __setslice__(self, *args): return _JohnsonReranker.Weights___setslice__(self, *args)
def __delslice__(self, *args): return _JohnsonReranker.Weights___delslice__(self, *args)
def __delitem__(self, *args): return _JohnsonReranker.Weights___delitem__(self, *args)
def __getitem__(self, *args): return _JohnsonReranker.Weights___getitem__(self, *args)
def __setitem__(self, *args): return _JohnsonReranker.Weights___setitem__(self, *args)
def append(self, *args): return _JohnsonReranker.Weights_append(self, *args)
def empty(self): return _JohnsonReranker.Weights_empty(self)
def size(self): return _JohnsonReranker.Weights_size(self)
def clear(self): return _JohnsonReranker.Weights_clear(self)
def swap(self, *args): return _JohnsonReranker.Weights_swap(self, *args)
def get_allocator(self): return _JohnsonReranker.Weights_get_allocator(self)
def begin(self): return _JohnsonReranker.Weights_begin(self)
def end(self): return _JohnsonReranker.Weights_end(self)
def rbegin(self): return _JohnsonReranker.Weights_rbegin(self)
def rend(self): return _JohnsonReranker.Weights_rend(self)
def pop_back(self): return _JohnsonReranker.Weights_pop_back(self)
def erase(self, *args): return _JohnsonReranker.Weights_erase(self, *args)
def __init__(self, *args):
this = _JohnsonReranker.new_Weights(*args)
try: self.this.append(this)
except: self.this = this
def push_back(self, *args): return _JohnsonReranker.Weights_push_back(self, *args)
def front(self): return _JohnsonReranker.Weights_front(self)
def back(self): return _JohnsonReranker.Weights_back(self)
def assign(self, *args): return _JohnsonReranker.Weights_assign(self, *args)
def resize(self, *args): return _JohnsonReranker.Weights_resize(self, *args)
def insert(self, *args): return _JohnsonReranker.Weights_insert(self, *args)
def reserve(self, *args): return _JohnsonReranker.Weights_reserve(self, *args)
def capacity(self): return _JohnsonReranker.Weights_capacity(self)
__swig_destroy__ = _JohnsonReranker.delete_Weights
__del__ = lambda self : None;
Weights_swigregister = _JohnsonReranker.Weights_swigregister
Weights_swigregister(Weights)

# This file is compatible with both classic and new-style classes.


Loading