<commit_before>PyStruct
========

This is my humble structural SVM and CRF implementation.
I use it for my research and hope you find it helpful.
Be aware that it might change drastically.

Content
-------
There are three basic parts to the implementation:

- Structural SVMs
    These implement max margin learning, similar to SVM^struct.
    There is a subgradient and a QP version. 
    They are not particularly optimized but at this part is usually not the
    bottleneck in structured learning, so the is not really an issue. It is
    possible to put positivity constraints on certain weight.

- CRFs / Problems
    These know about the structure of the problem, the loss and the inference.
    This is basically the part that you have to write yourself when using the
    Python interface in SVM^struct.
    I am only working on pairwise models and there is support for grids and
    general graphs. I am mostly working on the grids at the moment.

- Inference Solvers
    There are some options to use differnent solvers for inference.
    A linear programming solver using GLPK is included.
    I have Python interfaces for several other methods on github,
    including LibDAI, QPBO, AD3 and GCO (submodular graph cuts).


There is also some stuff on latent SVMs here that is my current research and
I'd ask you not to steal it ;)

For updates, read my blog at http://peekaboo-vision.blogspot.com<commit_msg>improved readme<commit_after>PyStruct
========

This is my humble structural SVM and CRF implementation.
I use it for my research and hope you find it helpful.
Be aware that it might change drastically.

Content
-------
There are three basic parts to the implementation:

:Structural SVMs:
    These implement max margin learning, similar to SVM^struct.
    There is a subgradient and a QP version. 
    They are not particularly optimized but at this part is usually not the
    bottleneck in structured learning, so the is not really an issue. It is
    possible to put positivity constraints on certain weight.
    There is also a simple perceptron.

:CRFs aka Problems:
    These know about the structure of the problem, the loss and the inference.
    This is basically the part that you have to write yourself when using the
    Python interface in SVM^struct.
    I am only working on pairwise models and there is support for grids and
    general graphs. I am mostly working on the grids at the moment.

:Inference Solvers:
    There are some options to use differnent solvers for inference.
    A linear programming solver using GLPK is included.
    I have Python interfaces for several other methods on github,
    including LibDAI, QPBO, AD3 and GCO (submodular graph cuts).

    This is where the heavy lifting is done and in some sense these backends
    are exchangable. I'm hoping to unify stuff a bit more here.


There is also some stuff on latent SVMs here that is my current research and
I'd ask you not to steal it ;)

For updates, read my blog at http://peekaboo-vision.blogspot.com

There are not publications yet that you can cite for this, I'm hoping there
will be some in the future.
{'fraction_non_alphanumeric': 0.039322250639386186, 'fraction_numerical': 0.0006393861892583121, 'mean_word_length': 3.47, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7496353', 'n_tokens_mistral': 824, 'n_tokens_neox': 764, 'n_words': 486}