No project description provided
Project description
pytorch-partial-crf
Partial/Fuzzy conditional random field in PyTorch.
Document: https://pytorch-partial-crf.readthedocs.io/
How to use
Install
pip install pytorch-partial-crf
Use CRF
import torch from pytorch_partial_crf import CRF # Create num_tags = 6 model = CRF(num_tags) batch_size, sequence_length = 3, 5 emissions = torch.randn(batch_size, sequence_length, num_tags) tags = torch.LongTensor([ [1, 2, 3, 3, 5], [1, 3, 4, 2, 1], [1, 0, 2, 4, 4], ]) # Computing negative log likelihood model(emissions, tags)
Use partial CRF
import torch from pytorch_partial_crf import PartialCRF # Create num_tags = 6 model = PartialCRF(num_tags) batch_size, sequence_length = 3, 5 emissions = torch.randn(batch_size, sequence_length, num_tags) # Set unknown tag to -1 tags = torch.LongTensor([ [1, 2, 3, 3, 5], [-1, 3, 3, 2, -1], [-1, 0, -1, -1, 4], ]) # Computing negative log likelihood model(emissions, tags)
Use Marginal CRF
import torch from pytorch_partial_crf import MarginalCRF # Create num_tags = 6 model = MarginalCRF(num_tags) batch_size, sequence_length = 3, 5 emissions = torch.randn(batch_size, sequence_length, num_tags) # Set probability tags marginal_tags = torch.Tensor([ [ [0.2, 0.2, 0.2, 0.1, 0.1, 0.2], [0.8, 0.0, 0.0, 0.1, 0.1, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [0.3, 0.0, 0.0, 0.1, 0.6, 0.0], ], [ [0.2, 0.2, 0.2, 0.1, 0.1, 0.2], [0.8, 0.0, 0.0, 0.1, 0.1, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [0.3, 0.0, 0.0, 0.1, 0.6, 0.0], ], [ [0.2, 0.2, 0.2, 0.1, 0.1, 0.2], [0.8, 0.0, 0.0, 0.1, 0.1, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [0.3, 0.0, 0.0, 0.1, 0.6, 0.0], ], ]) # Computing negative log likelihood model(emissions, marginal_tags)
Decoding
Viterbi decode
model.viterbi_decode(emissions)
Restricted viterbi decode
possible_tags = torch.randn(batch_size, sequence_length, num_tags) possible_tags[possible_tags <= 0] = 0 # `0` express that can not pass. possible_tags[possible_tags > 0] = 1 # `1` express that can pass. possible_tags = possible_tags.byte() model.restricted_viterbi_decode(emissions, possible_tags)
Marginal probabilities
model.marginal_probabilities(emissions)
Contributing
We welcome contributions! Please post your requests and comments on Issue.
License
MIT
References
The implementation is based on AllenNLP CRF module and pytorch-crf.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for pytorch-partial-crf-0.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5184dd339f39119112cf66215f055c22eff7d742b85ebc6cdd3d67d707221422 |
|
MD5 | 1a8578199fcaeeca96ee5e9a1b2bb2c9 |
|
BLAKE2-256 | 4a73cad3ac906542222e58108287d786461cacf6953f1b41428ae0d9a54e4416 |
Close
Hashes for pytorch_partial_crf-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 670aefbfac7d2cd5762b15bab23ed57eff972a682f056834a4b871981cfb2caf |
|
MD5 | e6ea07d3a56497c0c92e1780a05f41e7 |
|
BLAKE2-256 | 03b5281cdacbc5729e1a355f65da973b6f2b7852a5d68f93954135525bcaa8e9 |