我正在尝试使用 roberta 变压器和预训练模型,但我不断收到此错误:
ImportError:
AutoModelForSequenceClassification requires the PyTorch library but it was not found in your environment. Checkout the instructions on the
installation page: https://pytorch.org/get-started/locally/ and follow the ones that match your environment.
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
# Tasks:
# emoji, emotion, hate, irony, offensive, sentiment
# stance/abortion, stance/atheism, stance/climate, stance/feminist, stance/hillary
task='sentiment'
MODEL = f"cardiffnlp/twitter-roberta-base-{task}"
tokenizer = AutoTokenizer.from_pretrained(MODEL)
# download label mapping
labels=[]
mapping_link = f"https://raw.githubusercontent.com/cardiffnlp/tweeteval/main/datasets/{task}/mapping.txt"
model = AutoModelForSequenceClassification.from_pretrained(MODEL)
model.save_pretrained(MODEL)
labels=[]
mapping_link = f"https://raw.githubusercontent.com/cardiffnlp/tweeteval/main/datasets/{task}/mapping.txt"
with urllib.request.urlopen(mapping_link) as f:
html = f.read().decode('utf-8').split("\n")
csvreader …
Run Code Online (Sandbox Code Playgroud) 编辑:好的,我很抱歉,因为我对问题的第一个措辞过于简单,技术上正确的答案不适用于我的案例,所以这次我会尽量详细。
我正在构建一个正则表达式来捕获单个或复合代码。每个代码都以“H”、“G”、“EUH”或“AUG”开头,后跟三位数字 (H123) 或三位数字、一个点和一位数字。(H123.1)。第一个数字不能是零。
每个 H 代码后面可以跟一个或多个以下字符:“idDfF”.(H231Df)。每个 P 代码后面可以跟一个或多个这些字符:“AEBDab”。(P333a)。每个 EUH 代码后面都可以跟“A”。(EUH123A)。
化合物示例:H123Df+H234+H234.1+H342.1Fd 和 P123.1+P555D 空格可以在字符串中的任何位置,除了 3 位数字,它们总是相互跟随,没有空格。点或破折号可以在末尾的额外字符之前(H123-Df、H123.Df)
我需要匹配每个化合物或单个代码。请注意,在我之前的尝试中,我检测到 H567+H890+H654 正确,但也检测到 H567、H890 和 H654,这是错误的。一旦匹配了一个集合,它的内部代码不应再被视为单个代码。
我目前的方法实际上是 4 个不同的正则表达式代码,每组代码一个。它主要有效(我猜),但它非常乏味,如果将另一个代码添加到化合物中将无法工作,并且在正则表达式中添加更复杂的东西时,它非常难以维护。这是 P 代码的正则表达式示例。
`p = "P\s*\d{3}[.\s-]*[AEBDab]*\s*[+/]\s*P*\s*\d{3}[.\s-]*[AEBDab]*\s*[+/]\s*P*\s*\d{3}[.\s-]*[AEBDab]*|P\s*\d{3}[.\s-]*[AEBDab]*\s*[+/]\s*P*\s*\d{3}[.\s-][AEBDab]*|P\s*\d{3}[.\s-]*[AEBDab]*\s`"
Run Code Online (Sandbox Code Playgroud)
如您所见,它非常长且效率低下,编辑一个小东西会花费很多时间并且很容易出错。
我怎样才能以更好的方式实现这一目标?是制作 4 个正则表达式更好还是仅一个用于捕获所有 4 个代码的所有格式?
编辑:现实版本看起来完全像这样:
text = "random text
H326random text H243Df+H546+H677-Drandom text
randomtext P234a+P333.Ddrandom text
someother randomtexts"
output = [H326, H243+H546+H677, H234+H333]
Run Code Online (Sandbox Code Playgroud)
注意:所提供的文本中的空格非常随机,因为它们是用 pdfminer 库解析的 PDF 文本,它非常混乱了顺序和空格,但它是我发现的唯一一个可以实际“读取”我所有 10k PDF 文件的库有,其他库会产生空字符串,或者只是读取 PDF 的一部分。
注意:如果您能解释一下您的答案,因为在我工作时,我总是在发现新格式,并且我希望能够根据需要编辑正则表达式。
谢谢!