xiangking / ark-nlp

A private nlp coding package, which quickly implements the SOTA solutions.
Apache License 2.0
310 stars 65 forks source link

无实体 #85

Closed fjw1049 closed 4 months ago

fjw1049 commented 4 months ago

query无实体情况怎么加进去训练?

jimme0421 commented 4 months ago

你好,"label"置为空就可以了,比如:

有实体: {'text': '(5)房室结消融和起搏器植入作为反复发作或难治性心房内折返性心动过速的替代疗法。', 'label': [{'start_idx': 3, 'end_idx': 8, 'type': 'pro', 'entity': '房室结消融'}, {'start_idx': 9, 'end_idx': 14, 'type': 'pro', 'entity': '起搏器植入'}, {'start_idx': 16, 'end_idx': 34, 'type': 'dis', 'entity': '反复发作或难治性心房内折返性心动过速'}, {'start_idx': 35, 'end_idx': 39, 'type': 'pro', 'entity': '替代疗法'}]}

无实体: {'text': '(5)房室结消融和起搏器植入作为反复发作或难治性心房内折返性心动过速的替代疗法。', 'label': []}

fjw1049 commented 4 months ago

你好,"label"置为空就可以了,比如:

有实体: {'text': '(5)房室结消融和起搏器植入作为反复发作或难治性心房内折返性心动过速的替代疗法。', 'label': [{'start_idx': 3, 'end_idx': 8, 'type': 'pro', 'entity': '房室结消融'}, {'start_idx': 9, 'end_idx': 14, 'type': 'pro', 'entity': '起搏器植入'}, {'start_idx': 16, 'end_idx': 34, 'type': 'dis', 'entity': '反复发作或难治性心房内折返性心动过速'}, {'start_idx': 35, 'end_idx': 39, 'type': 'pro', 'entity': '替代疗法'}]}

无实体: {'text': '(5)房室结消融和起搏器植入作为反复发作或难治性心房内折返性心动过速的替代疗法。', 'label': []}

Traceback (most recent call last): File "/root/KnowledgeGraph/intent/models/entities_rec.py", line 56, in model.fit(ner_train_dataset, File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/ark_nlp/factory/task/base/_sequence_classification.py", line 92, in fit for step, inputs in enumerate(tqdm(train_generator)): File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/tqdm/std.py", line 1181, in iter for obj in iterable: File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 631, in next data = self._next_data() File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 675, in _next_data data = self._dataset_fetcher.fetch(index) # may raise StopIteration File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 54, in fetch return self.collate_fn(data) File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/ark_nlp/factory/task/base/_task.py", line 87, in _train_collate_fn return default_collate(batch) File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 277, in default_collate return collate(batch, collate_fn_map=default_collate_fn_map) File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 129, in collate return elem_type({key: collate([d[key] for d in batch], collate_fn_map=collate_fn_map) for key in elem}) File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 129, in return elem_type({key: collate([d[key] for d in batch], collate_fn_map=collate_fn_map) for key in elem}) File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 121, in collate return collate_fn_map[elem_type](batch, collate_fn_map=collate_fn_map) File "/root/miniconda3/envs/kg_qa/lib/python3.9/site-packages/torch/utils/data/_utils/collate.py", line 164, in collate_tensor_fn raise RuntimeError( RuntimeError: Batches of sparse tensors are not currently supported by the default collate_fn; please provide a custom collate_fn to handle them appropriately. 出现新的bug错误,能帮忙给看一下吗

jimme0421 commented 4 months ago

你的信息不完善,我没办法复现。我能提供的以下信息,你可以尝试自行调试。

sparse tensors 目前只使用在 global_point 模型数据处理的时候,减少数据加载所需的内存。

你如果有足够的内存,可以删除数据加载中的处理代码。例如: global_pointer_named_entity_recognition_dataset.pyglobal_label = global_label.to_sparse()

当然如果你能自定义 collate_fn 的话,可以重写 Task 对象中_train_collate_fn 和 _evaluate_collate_fn ,把 sparse tensors 重新展开。

fjw1049 commented 4 months ago

你的信息不完善,我没办法复现。我能提供的以下信息,你可以尝试自行调试。

sparse tensors 目前只使用在 global_point 模型数据处理的时候,减少数据加载所需的内存。

你如果有足够的内存,可以删除数据加载中的处理代码。例如: global_pointer_named_entity_recognition_dataset.pyglobal_label = global_label.to_sparse()

当然如果你能自定义 collate_fn 的话,可以重写 Task 对象中_train_collate_fn 和 _evaluate_collate_fn ,把 sparse tensors 重新展开。

是我数据格式有问题吗? [{'text': '政协庆阳市第五届委员会第三次会议是否已经召开?', 'label': [{'start_idx': 0, 'end_idx': 15, 'type': 'event', 'entity': '政协庆阳市第五届委员会第三次会议'}]}, {'text': '截至目前,全省退役军人事务局长会议共召开了几次?', 'label': [{'start_idx': 5, 'end_idx': 16, 'type': 'event', 'entity': '全省退役军人事bel': [{'start_idx': 0, 'end_idx': 25, 'type': 'event', 'entity': '中国残联第八届主席团第一次主席会议以视频形式在京召开'}]},,,、、、

还是我加了无实体的进去训练会出现这个问题,我用别的模型也会出现这个报错,不一定是GP,,很奇怪

jimme0421 commented 4 months ago

{'text': '截至目前,全省退役军人事务局长会议共召开了几次?', 'label': [{'start_idx': 5, 'end_idx': 16, 'type': 'event', 'entity': '全省退役军人事bel': [{'start_idx': 0, 'end_idx': 25, 'type': 'event', 'entity': '中国残联第八届主席团第一次主席会议以视频形式在京召开'}]} 这个数据怎么这么怪,不知道是不是你copy错了。

还有我想确认一下,你的环境安装是否正确,尤其是 torch 的版本。

python 3 torch >= 1.0.0, <1.10.0 tqdm >= 4.56.0 jieba >= 0.42.1 transformers >= 3.0.0 zhon >= 1.1.5 scipy >= 1.2.0 scikit-learn >= 0.17.0

fjw1049 commented 4 months ago

{'text': '截至目前,全省退役军人事务局长会议共召开了几次?', 'label': [{'start_idx': 5, 'end_idx': 16, 'type': 'event', 'entity': '全省退役军人事bel': [{'start_idx': 0, 'end_idx': 25, 'type': 'event', 'entity': '中国残联第八届主席团第一次主席会议以视频形式在京召开'}]} 这个数据怎么这么怪,不知道是不是你copy错了。

还有我想确认一下,你的环境安装是否正确,尤其是 torch 的版本。

python 3 torch >= 1.0.0, <1.10.0 tqdm >= 4.56.0 jieba >= 0.42.1 transformers >= 3.0.0 zhon >= 1.1.5 scipy >= 1.2.0 scikit-learn >= 0.17.0 torch 2.2.1+cu118
transformers 4.40.0

jimme0421 commented 4 months ago

torch太新了,你试试装老版本。比如:torch 1.9.1。

https://pytorch.org/get-started/previous-versions/#v191

fjw1049 commented 4 months ago

torch太新了,你试试装老版本。比如:torch 1.9.1。

https://pytorch.org/get-started/previous-versions/#v19

确实是torch版本问题,我改为1.13就没什么问题了,谢谢