Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[来自作者] fastHan repo情况说明 #49

Open
fdugzc opened this issue Oct 30, 2023 · 13 comments
Open

[来自作者] fastHan repo情况说明 #49

fdugzc opened this issue Oct 30, 2023 · 13 comments

Comments

@fdugzc
Copy link
Member

fdugzc commented Oct 30, 2023

大家好,我是fastHan论文以及第一代版本的作者。目前我已经从实验室毕业,但了解到当前没有人继续维护本项目。目前看到许多用户反映2.x无法下载、使用的问题,我决定继续维护第一代与第二代fastHan。目前的情况是,原先用于存放权重的文件服务器已经停用,第一代第二代模型均无法直接下载。后续我计划将文件权重放到huggingface或其他地方,可供用户直接加载。

由于我已经参加工作,只能在周末抽空更新,预计进度不会太快。欢迎有能力有时间的小伙伴提PR,大家一起为项目做出贡献。之前做本项目的时候,我对开源社区的模式不太了解,做的不是特别规范。后面希望能尽量改进,方便大家阅读、贡献。

Q:目前如何最快得使用到fastHan模型?
A:目前最快的方法是从百度网盘中下载第一代fastHan的权重并使用,请参考 #38 中的方法
请注意,若你的需求为分词、命名实体识别、词性标注、依存分析,一代、二代的性能较为接近,请放心使用一代模型。

Q:第一代fastHan迁移huggingface的难点?
A:第一代fastHan加载模型部分基于fastNLP开发,无法直接适配huggingface。需要修改加载模型逻辑,甚至修改模型.bin文件中参数路径。

Q:第二代fastHan迁移huggingface难点?
A:fastHan二代模型的权重位于实验室服务器,但我已连不上校园网,需要找同学帮忙导出。且我不了解二代的AMR部分,需要一定的时间来阅读代码并上手。

@MGzhou
Copy link

MGzhou commented Nov 1, 2023

由衷地感谢您在毕业后仍然选择继续维护这个项目。衷心感激您的辛勤付出。

@fdugzc
Copy link
Member Author

fdugzc commented Nov 11, 2023

fasthan一代的模型权重已迁移至huggingface,现在可访问huggingface的机器可自动初始化模型,无需从百度网盘手动下载。

二代模型已联系学弟,据说已从实验室服务器中删除,不知能否找回。若找回将尽快在此更新。大家请先用第一代:
pip install fastHan==1.8

有bug请提issue。

@fdugzc
Copy link
Member Author

fdugzc commented Nov 11, 2023

由衷地感谢您在毕业后仍然选择继续维护这个项目。衷心感激您的辛勤付出。

大家觉得有帮助就好~

@ndyysheep
Copy link

您好,我pip install fastHan==1.8以后,使用
from fastHan import FastHan
model=FastHan(model_type="base", url="E:/PYcharm/SCU_class_workspace/fastHan/Model/fasthan_base")
这段代码,但还是报错:
Traceback (most recent call last):
File "E:\PYcharm\SCU_class_workspace\fastHan\test_init_.py", line 1, in
from fastHan import FastHan
File "E:\PYcharm\SCU_class_workspace\fastHan\fastHan_init_.py", line 1, in
from .FastModel import FastHan
File "E:\PYcharm\SCU_class_workspace\fastHan\fastHan\FastModel.py", line 11, in
from fastNLP.core import LoadBestModelCallback, TorchWarmupCallback
ImportError: cannot import name 'LoadBestModelCallback' from 'fastNLP.core' (E:\python\fastHan\lib\site-packages\fastNLP\core_init_.py)
我不明白这是版本不兼容吗?明明所有fastNLP,torch都是相关版本的

@fdugzc
Copy link
Member Author

fdugzc commented Nov 11, 2023

您好,我pip install fastHan==1.8以后,使用 from fastHan import FastHan model=FastHan(model_type="base", url="E:/PYcharm/SCU_class_workspace/fastHan/Model/fasthan_base") 这段代码,但还是报错: Traceback (most recent call last): File "E:\PYcharm\SCU_class_workspace\fastHan\test__init__.py", line 1, in from fastHan import FastHan File "E:\PYcharm\SCU_class_workspace\fastHan\fastHan__init__.py", line 1, in from .FastModel import FastHan File "E:\PYcharm\SCU_class_workspace\fastHan\fastHan\FastModel.py", line 11, in from fastNLP.core import LoadBestModelCallback, TorchWarmupCallback ImportError: cannot import name 'LoadBestModelCallback' from 'fastNLP.core' (E:\python\fastHan\lib\site-packages\fastNLP\core__init__.py) 我不明白这是版本不兼容吗?明明所有fastNLP,torch都是相关版本的

你实际import的fastHan是main branch的fastHan,不是1.8的fastHan。你应该是在clone好的fastHan git repo的根目录跑的这个脚本。重新换一个目录,跑“from fastHan import FastHan
model=FastHan(model_type="base", url="E:/PYcharm/SCU_class_workspace/fastHan/Model/fasthan_base")” 试下?

@ndyysheep
Copy link

成功了,非常感谢,您的回复对我的学习有很大的帮助

@ndyysheep
Copy link

前辈您好,我现在简答使用代码:
from fastHan import FastHan

try:
FastHan( )
print("模型加载成功")
except:
print("模型加载失败")

sentence="郭靖是金庸笔下的男主角。"
answer=model(sentence)
print(answer)
answer=model(sentence,target="Parsing")
print(answer)
answer=model(sentence,target="NER")
print(answer)
还是报错没有model这个函数,是因为fasthan1.8包里没有这个函数吗

@fdugzc
Copy link
Member Author

fdugzc commented Nov 11, 2023

前辈您好,我现在简答使用代码: from fastHan import FastHan

try: FastHan( ) print("模型加载成功") except: print("模型加载失败")

sentence="郭靖是金庸笔下的男主角。" answer=model(sentence) print(answer) answer=model(sentence,target="Parsing") print(answer) answer=model(sentence,target="NER") print(answer) 还是报错没有model这个函数,是因为fasthan1.8包里没有这个函数吗

try:
FastHan( )

改成|
try:
model=FastHan( )

你在前面初始化fastHan的时候需要有个变量来存,就是model。它是fastHan 类的一个实例

@ndyysheep
Copy link

成功解决,非常感谢,类似的低级错误我会多注意

@ndyysheep
Copy link

ndyysheep commented Nov 12, 2023

前辈您好,如果我想重新训练这个模型,让他满足我的需求,我可以直接在1.8版本里使用这段代码吗?
from fastHan import FastHanLSTMCRF, Trainer

training_data = [
("广东揭阳榕城区人民法院副院长兼任榕城区人民法院党组副书记", ["L", "L", "L", "S", "P", "O", "L", "S", "O", "P"]),
# 添加更多的样本...
]

def prepare_data_for_training(data):
sentences, labels = zip(*data)
return list(sentences), list(labels)

train_sentences, train_labels = prepare_data_for_training(training_data)

model = FastHanLSTMCRF(tag_vocab_size=4) # 4 表示你的实体标签数量

trainer = Trainer(model, optimizer="adam", loss="crf_loss")

trainer.train(train_sentences, train_labels, epochs=10, batch_size=4) # 根据实际情况调整 epochs 和 batch_size

model.save("fasthan_entity_model")
但是 fasthan报错没有FastHanLSTMCRF和Trainer这两个包

@fdugzc
Copy link
Member Author

fdugzc commented Nov 19, 2023

前辈您好,如果我想重新训练这个模型,让他满足我的需求,我可以直接在1.8版本里使用这段代码吗? from fastHan import FastHanLSTMCRF, Trainer

training_data = [ ("广东揭阳榕城区人民法院副院长兼任榕城区人民法院党组副书记", ["L", "L", "L", "S", "P", "O", "L", "S", "O", "P"]), # 添加更多的样本... ]

def prepare_data_for_training(data): sentences, labels = zip(*data) return list(sentences), list(labels)

train_sentences, train_labels = prepare_data_for_training(training_data)

model = FastHanLSTMCRF(tag_vocab_size=4) # 4 表示你的实体标签数量

trainer = Trainer(model, optimizer="adam", loss="crf_loss")

trainer.train(train_sentences, train_labels, epochs=10, batch_size=4) # 根据实际情况调整 epochs 和 batch_size

model.save("fasthan_entity_model") 但是 fasthan报错没有FastHanLSTMCRF和Trainer这两个包

里面确实没有这俩包啊,咱不能凭空import一个吧2333

@ndyysheep
Copy link

非常感谢,我换了一个训练方法,我这段时间已经推进了很大一部分了。

@Jackson555zhao
Copy link

您好!请问2.0的模型在哪里可以下载啊?万分感谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants