CoolFace
Modelpublic

aydiet/plant-patent-paecter-variety-technology

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
0likes11downloads
Model Card

PaECTER Variety-vs-Technology Patent-Family Classifier

This is the second-stage production classifier for the manuscript Identifying Plant-Related Patents: Corpus Construction and Global Patterns. It fine-tunes mpi-inno-comp/paecter to classify plant-related patent families as variety-focused or technology-focused using English title and abstract text.

This release is a companion checkpoint for reproducible research on variety-focused and technology-focused plant patent classification. The Apache-2.0 license metadata follows the PaECTER base-model release.

Model Details

  • —Base model: `mpi-inno-comp/paecter`
  • —Architecture: BertForSequenceClassification
  • —Task: binary text classification
  • —Input text: English title, blank line, English abstract
  • —Maximum length: 512 tokens
  • —Labels:
  • —variety: variety-focused plant patent family
  • —technology: technology-focused plant patent family
  • —Recommended decision rule: classify as technology when p_technology >= 0.000399

This model is intended to be applied only after the first-stage plant-related detector has selected plant-related families.

This model is a supervised fine-tune of PaECTER. Please cite or link the original PaECTER model and paper when reusing this checkpoint.

Training Data

The model was trained on the plant-positive subset of the repository's internal 600-family labeled DOCDB sample. The subtype split contains 142 train, 30 validation, and 31 test families. The row-level labeling queue, patent text, split manifest, and prediction files are not part of this model release.

Evaluation

Metrics below use the validation-F1-selected threshold p_technology >= 0.000399, with technology as the positive class.

SplitPR-AUCPrecisionRecallF1Accuracy
Validation0.97400.95001.00000.97440.9667
Test1.00001.00001.00001.00001.0000

The held-out test split is small (n = 31), so differences between subtype models should be interpreted cautiously.

Intended Use

Use this model to separate already plant-related patent families into variety-focused and technology-focused subtypes. It is useful for corpus summaries, downstream descriptive analysis, and manual review workflows where the input family has already passed the plant-related inclusion stage.

Limitations

  • —The subtype training set is small and conditional on first-stage plant inclusion.
  • —Inputs longer than 512 tokens are truncated.
  • —The near-zero threshold reflects validation-set calibration on a small, imbalanced subtype dataset; it is not an intrinsic probability of technology focus.
  • —The model is trained on English title and abstract text, not full patent claims or descriptions.

Reproducibility

Reference artifacts in the companion repository:

  • —Training report: metadata/variety_technology_paecter_report_2026-01-30.md
  • —Metrics JSON: metadata/variety_technology_paecter_metrics_2026-01-30.json
  • —Public companion repository: <https://github.com/aydiet/plant-patent-classifier-reproducibility>

Companion Resources

  • —Original PaECTER base model: <https://huggingface.co/mpi-inno-comp/paecter>
  • —Interactive demo Space: <https://huggingface.co/spaces/aydiet/plant-patent-classifier-demo>
  • —First-stage plant-related detector: <https://huggingface.co/aydiet/plant-patent-paecter-plant-detector>
  • —Public companion repository: <https://github.com/aydiet/plant-patent-classifier-reproducibility>
  • —Manuscript context: Identifying Plant-Related Patents: Corpus Construction and Global Patterns

Example

python
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch

model_id = "aydiet/plant-patent-paecter-variety-technology"
text = "Drought tolerant maize plant\n\nA maize plant with improved drought tolerance is provided."

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding="max_length", max_length=512)

with torch.no_grad():
    probs = torch.softmax(model(**inputs).logits, dim=-1)[0]

p_technology = float(probs[model.config.label2id["technology"]])
label = "technology" if p_technology >= 0.000399 else "variety"
print(label, p_technology)