首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内核在使用基于伯特的情感分析模型时一直处于死亡状态。

内核在使用基于伯特的情感分析模型时一直处于死亡状态。
EN

Stack Overflow用户
提问于 2022-05-26 18:26:10
回答 2查看 555关注 0票数 1

我试着在朱庇特笔记本上使用德国伯特情感分析。我安装的火把是正确的,但是内核一直在死亡。我在MacOs 12.3.1的MacBook Pro '21上。我安装了Python10.3.4。PyTorch没有出现在该环境中安装的软件包列表中,尽管在终端中它告诉我“需求已经满足了”。

我试着在拥抱脸上运行示例代码postet。https://huggingface.co/oliverguhr/german-sentiment-bert

代码语言:javascript
复制
from transformers import AutoModelForSequenceClassification, AutoTokenizer
from typing import List
import torch
import re

class SentimentModel():
    def __init__(self, model_name: str):
        self.model = AutoModelForSequenceClassification.from_pretrained(model_name)
        self.tokenizer = AutoTokenizer.from_pretrained(model_name)

        self.clean_chars = re.compile(r'[^A-Za-züöäÖÜÄß ]', re.MULTILINE)
        self.clean_http_urls = re.compile(r'https*\\S+', re.MULTILINE)
        self.clean_at_mentions = re.compile(r'@\\S+', re.MULTILINE)

    def predict_sentiment(self, texts: List[str])-> List[str]:
        texts = [self.clean_text(text) for text in texts]
        # Add special tokens takes care of adding [CLS], [SEP], <s>... tokens in the right way for each model.
        encoded = self.tokenizer.batch_encode_plus(texts,padding=True, add_special_tokens=True,truncation=True, return_tensors="pt")
        encoded = encoded.to(self.device)
        with torch.no_grad():
                logits = self.model(**encoded)
        
        label_ids = torch.argmax(logits[0], axis=1)
        return [self.model.config.id2label[label_id.item()] for label_id in label_ids]

    def replace_numbers(self,text: str) -> str:
            return text.replace("0"," null").replace("1"," eins").replace("2"," zwei").replace("3"," drei").replace("4"," vier").replace("5"," fünf").replace("6"," sechs").replace("7"," sieben").replace("8"," acht").replace("9"," neun")         

    def clean_text(self,text: str)-> str:    
            text = text.replace("\n", " ")        
            text = self.clean_http_urls.sub('',text)
            text = self.clean_at_mentions.sub('',text)        
            text = self.replace_numbers(text)                
            text = self.clean_chars.sub('', text) # use only text chars                          
            text = ' '.join(text.split()) # substitute multiple whitespace with single whitespace   
            text = text.strip().lower()
            return text

texts = ["Mit keinem guten Ergebniss","Das war unfair", "Das ist gar nicht mal so gut",
        "Total awesome!","nicht so schlecht wie erwartet", "Das ist gar nicht mal so schlecht",
        "Der Test verlief positiv.","Sie fährt ein grünes Auto.", "Der Fall wurde an die Polzei übergeben."]

model = SentimentModel(model_name = "oliverguhr/german-sentiment-bert")

print(model.predict_sentiment(texts))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-14 10:16:41

你能试试这个密码吗。在一个简单易用的库中,它是相同的模型。

代码语言:javascript
复制
pip install germansentiment
代码语言:javascript
复制
from germansentiment import SentimentModel

model = SentimentModel()

texts = [
    "Mit keinem guten Ergebniss","Das ist gar nicht mal so gut",
    "Total awesome!","nicht so schlecht wie erwartet",
    "Der Test verlief positiv.","Sie fährt ein grünes Auto."]
       
result = model.predict_sentiment(texts)
print(result)
票数 1
EN

Stack Overflow用户

发布于 2022-10-04 18:58:56

对我来说,一个类似的问题是通过在import torch导入之前移动transformer来解决的。您是否可以尝试编辑您的导入以:

代码语言:javascript
复制
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
from typing import List
import re
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72396420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档