CoolFace
Apppublic

ecexe/PatentGPT

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes
App README

PatentGPT - Advanced Patent Analysis Platform

PatentGPT is a comprehensive patent analysis platform that uses machine learning to classify and analyze patents using official USPTO data. The system processes patent XML files and CPC (Cooperative Patent Classification) data to train a BERT-based classifier for accurate patent classification.

๐Ÿš€ Key Features

  • โ€”Official USPTO Data: Trained on real patent XML files from USPTO bulk data
  • โ€”BERT-Based Classification: Advanced transformer model for patent classification
  • โ€”CPC Code Prediction: Predicts Cooperative Patent Classification codes
  • โ€”Comprehensive Analysis: Patent clustering, obsolescence analysis, and trend detection
  • โ€”Web Interface: Streamlit-based dashboard for easy interaction
  • โ€”HuggingFace Ready: Complete model package for easy deployment

๐Ÿ“Š Data Processing Workflow

The system processes two main data sources:

  1. 1.Patent XML Files: Extracted from ZIP files containing patent grants
  2. 2.CPC Master Classification Files: Official USPTO CPC classification data

Data Processing Steps:

  1. 1.Extract ZIP Files: Process patent XML files from patent_data/I20250805/
  2. 2.Parse XML Content: Extract patent ID, title, abstract, and CPC codes
  3. 3.Process CPC Data: Parse CPC Master Classification files
  4. 4.Merge Data: Join patent text with CPC classifications
  5. 5.Create Training Dataset: Generate comprehensive training data for BERT

๐Ÿ› ๏ธ Installation

bash
# Clone the repository
git clone https://github.com/yourusername/patentgpt.git
cd patentgpt

# Install dependencies
pip install -r requirements.txt

๐Ÿš€ Quick Start

Option 1: Run Complete Pipeline (Recommended)

bash
# Run the complete data processing and training pipeline
python run_complete_pipeline.py

This will:

  1. 1.Process patent XML files and CPC data
  2. 2.Train a BERT classifier
  3. 3.Test the model
  4. 4.Create HuggingFace package

Option 2: Step-by-Step Processing

bash
# Step 1: Process patent data
python process_patent_data.py

# Step 2: Train BERT model
python train_bert_classifier.py

# Step 3: Test the model
python -c "from app.classifier import classify_patent_abstract; print(classify_patent_abstract('A method for semiconductor processing'))"

Option 3: Web Interface

bash
# Start the Streamlit application
streamlit run app/app.py

๐Ÿ“ Project Structure

PatentGPT/
โ”œโ”€โ”€ app/                          # Web application
โ”‚   โ”œโ”€โ”€ app.py                   # Main Streamlit app
โ”‚   โ”œโ”€โ”€ classifier.py            # BERT classifier
โ”‚   โ”œโ”€โ”€ ui.py                   # User interface
โ”‚   โ””โ”€โ”€ ...                     # Other modules
โ”œโ”€โ”€ patent_data/                 # USPTO data (not included)
โ”‚   โ”œโ”€โ”€ I20250805/              # Patent XML files
โ”‚   โ””โ”€โ”€ US_Grant_CPC_MCF_XML_2025-07-01/  # CPC data
โ”œโ”€โ”€ processed_data/              # Generated training data
โ”œโ”€โ”€ trained_classifier/          # Trained model files
โ”œโ”€โ”€ process_patent_data.py      # Data processing script
โ”œโ”€โ”€ train_bert_classifier.py    # BERT training script
โ”œโ”€โ”€ run_complete_pipeline.py    # Complete pipeline
โ””โ”€โ”€ README.md                   # This file

๐Ÿ”ง Data Processing

Patent XML Structure

The system processes USPTO patent XML files with the following structure:

xml
<us-patent-grant>
  <us-bibliographic-data-grant>
    <publication-reference>
      <document-id>
        <doc-number>12379042</doc-number>
      </document-id>
    </publication-reference>
    <invention-title>Patent Title</invention-title>
  </us-bibliographic-data-grant>
  <abstract>
    <p>Patent abstract text...</p>
  </abstract>
  <classifications-cpc>
    <classification-cpc>
      <section>F</section>
      <class>16</class>
      <subclass>K</subclass>
      <main-group>27</main-group>
      <subgroup>003</subgroup>
    </classification-cpc>
  </classifications-cpc>
</us-patent-grant>

CPC Master Classification Structure

xml
<uspat:CPCMasterClassificationRecord>
  <pat:ApplicationIdentification>
    <com:ApplicationNumberText>12345678</com:ApplicationNumberText>
  </pat:ApplicationIdentification>
  <pat:CPCClassificationText>F16K27/003</pat:CPCClassificationText>
</uspat:CPCMasterClassificationRecord>

๐Ÿค– Model Training

BERT Classifier

The system trains a BERT-based classifier with the following configuration:

  • โ€”Base Model: bert-base-uncased
  • โ€”Max Length: 512 tokens
  • โ€”Batch Size: 16
  • โ€”Learning Rate: 2e-5
  • โ€”Epochs: 3
  • โ€”Task: Multi-class classification (CPC codes)

Training Data

The training dataset includes:

  • โ€”Patent titles and abstracts
  • โ€”CPC classification codes
  • โ€”Normalized patent IDs
  • โ€”Text preprocessing and augmentation

๐Ÿ“Š Model Performance

The trained model provides:

  • โ€”Multi-class Classification: Predicts specific CPC codes
  • โ€”Confidence Scores: Probability estimates for predictions
  • โ€”Top-k Predictions: Multiple candidate classifications
  • โ€”Section-level Analysis: CPC section categorization

๐ŸŒ Web Interface

The Streamlit application provides:

  • โ€”Patent Classification: Upload or input patent text for classification
  • โ€”Model Information: View training details and data provenance
  • โ€”Analysis Tools: Clustering, obsolescence, and trend analysis
  • โ€”Data Visualization: Interactive charts and graphs

๐Ÿ“ฆ HuggingFace Integration

The trained model is packaged for HuggingFace with:

  • โ€”Model Files: Complete BERT model and tokenizer
  • โ€”Label Encoder: CPC code mapping
  • โ€”Documentation: README and model card
  • โ€”Git LFS: Large file handling

๐Ÿ” Usage Examples

Python API

python
from app.classifier import classify_patent_abstract

# Classify a patent abstract
result = classify_patent_abstract(
    "A method for processing semiconductor materials using advanced chemical techniques."
)

print(f"Predicted CPC: {result['predicted_class']}")
print(f"Confidence: {result['confidence']:.3f}")
print(f"Section: {result['cpc_section']}")

Web Interface

  1. 1.Start the application: streamlit run app/app.py
  2. 2.Navigate to the Classification tab
  3. 3.Input patent text or upload a file
  4. 4.View classification results and confidence scores

๐Ÿ“ˆ Data Provenance

The model is trained on official USPTO data:

  • โ€”Source: USPTO Bulk Data
  • โ€”Patent Files: XML format with titles and abstracts
  • โ€”CPC Data: Master Classification files
  • โ€”Data Quality: Official government source
  • โ€”Coverage: Comprehensive patent database

๐Ÿ› ๏ธ Development

Adding New Features

  1. 1.Data Processing: Modify process_patent_data.py
  2. 2.Model Training: Update train_bert_classifier.py
  3. 3.Web Interface: Edit app/ui.py
  4. 4.Classifier: Modify app/classifier.py

Testing

bash
# Test data processing
python process_patent_data.py

# Test model training
python train_bert_classifier.py

# Test web interface
streamlit run app/app.py

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿค Contributing

  1. 1.Fork the repository
  2. 2.Create a feature branch
  3. 3.Make your changes
  4. 4.Add tests if applicable
  5. 5.Submit a pull request

๐Ÿ“ž Support

For questions or issues:

  • โ€”Create an issue on GitHub
  • โ€”Check the documentation
  • โ€”Review the code comments

๐Ÿ”„ Updates

  • โ€”v2.0: Complete rewrite with BERT classifier and USPTO data processing
  • โ€”v1.0: Initial release with basic classification

PatentGPT - Advanced Patent Analysis with Official USPTO Data