mcpField
N
nlp-supply-chain

nlp-supply-chain

github.com/kishorkukreja数据与数据库8446 次安装3 周前更新
代码仓库

关于 nlp-supply-chain

nlp-supply-chain 是面向供应链场景的 NLP 技能,帮助分析非结构化文本、处理业务文档和分类产品。内容涵盖 BERT 分类、发票实体识别、供应商风险情绪分析及查询聊天机器人。

主要功能

  1. 01采购订单、发票和合同处理
  2. 02基于 BERT 的产品分类
  3. 03发票命名实体识别
  4. 04供应商风险情绪分析
  5. 05供应链查询聊天机器人

适用场景

  1. 01从发票中提取实体信息
  2. 02按文本描述归类产品
  3. 03分析新闻和报告中的供应商风险
  4. 04回答内部供应链查询

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill nlp-supply-chain

安装后在 Claude Code 中输入/nlp-supply-chain确认已加载。

详细介绍

供应链自然语言处理

你是将 NLP 应用于供应链问题的专家。你的目标是从非结构化文本中提取见解、自动处理文档、分析供应商通信,并使用现代 NLP 技术对产品进行分类。

应用场景

  1. 文档处理:采购订单、发票、合同
  2. 产品分类:根据描述对商品进行分类
  3. 供应商风险分析:分析新闻、报告和情感
  4. 需求感知:社交媒体、评价、趋势
  5. 聊天机器人:客户服务、内部查询

使用 BERT 进行产品分类

from transformers import BertTokenizer, BertForSequenceClassification
import torch

class ProductClassifier:
    """
    Classify products from text descriptions using BERT
    """
    
    def __init__(self, num_classes):
        self.tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
        self.model = BertForSequenceClassification.from_pretrained(
            'bert-base-uncased',
            num_labels=num_classes
        )
    
    def classify(self, product_description):
        """Classify product from description"""
        
        # Tokenize
        inputs = self.tokenizer(
            product_description,
            return_tensors='pt',
            truncation=True,
            padding=True,
            max_length=128
        )
        
        # Predict
        with torch.no_grad():
            outputs = self.model(**inputs)
            logits = outputs.logits
            predicted_class = torch.argmax(logits, dim=1).item()
        
        return predicted_class

发票命名实体识别(NER)

from transformers import pipeline

class InvoiceExtractor:
    """
    Extract entities from invoices using NER
    """
    
    def __init__(self):
        self.ner = pipeline("ner", model="dbmdz/bert-large-cased-finetuned-conll03-english")
    
    def extract_entities(self, invoice_text):
        """Extract company names, dates, amounts"""
        
        entities = self.ner(invoice_text)
        
        extracted = {
            'companies': [],
            'dates': [],
            'amounts': []
        }
        
        for ent in entities:
            if ent['entity'].startswith('B-ORG') or ent['entity'].startswith('I-ORG'):
                extracted['companies'].append(ent['word'])
            elif ent['entity'].startswith('B-DATE'):
                extracted['dates'].append(ent['word'])
        
        return extracted

供应商风险情感分析

from transformers import pipeline

class SupplierRiskAnalyzer:
    """
    Analyze supplier risk from news and reports
    """
    
    def __init__(self):
        self.sentiment_analyzer = pipeline("sentiment-analysis")
    
    def analyze_news(self, articles):
        """Analyze sentiment of news about supplier"""
        
        sentiments = []
        for article in articles:
            result = self.sentiment_analyzer(article['text'])[0]
            sentiments.append({
                'article': article['title'],
                'sentiment': result['label'],
                'score': result['score']
            })
        
        # Aggregate risk
        negative_count = sum(1 for s in sentiments if s['sentiment'] == 'NEGATIVE')
        risk_score = negative_count / len(sentiments)
        
        return {
            'risk_score': risk_score,
            'sentiments': sentiments
        }

供应链查询聊天机器人

from transformers import AutoModelForCausalLM, AutoTokenizer

class SupplyChainChatbot:
    """
    Chatbot for internal supply chain queries
    """
    
    def __init__(self):
        self.tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
        self.model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
    
    def respond(self, user_input, chat_history):
        """Generate response to user query"""
        
        # Encode input
        new_input_ids = self.tokenizer.encode(
            user_input + self.tokenizer.eos_token,
            return_tensors='pt'
        )
        
        # Generate response
        chat_history_ids = torch.cat([chat_history, new_input_ids], dim=-1)                           if chat_history is not None else new_input_ids
        
        response_ids = self.model.generate(
            chat_history_ids,
            max_length=1000,
            pad_token_id=self.tokenizer.eos_token_id
        )
        
        response = self.tokenizer.decode(
            response_ids[:, chat_history_ids.shape[-1]:][0],
            skip_special_tokens=True
        )
        
        return response, response_ids

工具与库

  • transformers (Hugging Face):BERT、GPT、T5
  • spaCy:工业级 NLP
  • NLTK:文本处理
  • Gensim:主题建模
  • OpenAI API:GPT-4 集成

相关技能

  • ml-supply-chain:通用机器学习
  • **supplier-risk-management`:风险分析
  • demand-forecasting:从文本中感知需求

评论

支持 Markdown