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
File details
Details for the file pytorch-partial-crf-0.2.1.tar.gz
.
File metadata
- Download URL: pytorch-partial-crf-0.2.1.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.0a2 CPython/3.9.8 Linux/5.11.0-1020-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5184dd339f39119112cf66215f055c22eff7d742b85ebc6cdd3d67d707221422 |
|
MD5 | 1a8578199fcaeeca96ee5e9a1b2bb2c9 |
|
BLAKE2b-256 | 4a73cad3ac906542222e58108287d786461cacf6953f1b41428ae0d9a54e4416 |
File details
Details for the file pytorch_partial_crf-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: pytorch_partial_crf-0.2.1-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.0a2 CPython/3.9.8 Linux/5.11.0-1020-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 670aefbfac7d2cd5762b15bab23ed57eff972a682f056834a4b871981cfb2caf |
|
MD5 | e6ea07d3a56497c0c92e1780a05f41e7 |
|
BLAKE2b-256 | 03b5281cdacbc5729e1a355f65da973b6f2b7852a5d68f93954135525bcaa8e9 |