小编Pau*_*ler的帖子

python中的子句提取/长句分割

我目前正在开展一个涉及句子向量的项目(来自 RoBERTa 预训练模型)。当句子很长时,这些向量的质量较低,并且我的语料库包含许多带有子句的长句子。

我一直在寻找子句提取/长句分割的方法,但令我惊讶的是,没有一个主要的 NLP 软件包(例如 spacy 或 stanza)提供开箱即用的功能。

我想这可以通过使用 spacy 或 stanza 的依赖解析来完成,但正确处理各种复杂的句子和边缘情况可能会非常复杂。

我遇到过使用 spacy实现ClausIE 信息提取系统,它可以执行类似的操作,但它尚未更新并且无法在我的计算机上运行。

我也遇到过这个用于简化句子的存储库,但是当我在本地运行它时,我收到了斯坦福 coreNLP 的注释错误。

有没有我忽略的明显的包/方法?如果没有,是否有一种简单的方法可以使用 stanza 或 spacy 来实现此目的?

python nlp stanford-nlp spacy bert-language-model

9
推荐指数
1
解决办法
6586
查看次数

使用 RoBERTa 加速嵌入 200 万个句子

我有大约 200 万个句子,我想使用 Facebook AI 的 RoBERTa-large 将它们转换为向量,在 NLI 和 STSB 上进行微调以获得句子相似性(使用很棒的句子转换器包)。

我已经有一个包含两列的数据框:“话语”包含语料库中的每个句子,“报告”包含每个句子的文档标题。

从那里,我的代码如下:

from sentence_transformers import SentenceTransformer
from tqdm import tqdm

model = SentenceTransformer('roberta-large-nli-stsb-mean-tokens')

print("Embedding sentences")

data = pd.read_csv("data/sentences.csv")

sentences = data['utterance'].tolist()

sentence_embeddings = []

for sent in tqdm(sentences):
    embedding = model.encode([sent])
    sentence_embeddings.append(embedding[0])

data['vector'] = sentence_embeddings
Run Code Online (Sandbox Code Playgroud)

现在,tqdm 估计整个过程在我的电脑上大约需要 160 个小时,这超出了我的时间。

有什么办法可以通过更改代码来加快速度吗?在内存中创建一个巨大的列表然后将它附加到数据帧是在这里进行的最佳方式吗?(我怀疑不是)。

提前谢谢了!

python nlp transformer-model word-embedding

3
推荐指数
1
解决办法
679
查看次数

根据值(字符串)更改 Plotly 表中单元格的文本颜色

我有以下脚本将 Pandas 数据框转换为带有 Plotly 的交互式 html 表:


goals_output_df = pd.read_csv(os.path.join(question_dir, "data/output.csv"))

fig = go.Figure(data=[go.Table(
    columnwidth = [15,170,15,35,35],
    header=dict(values=['<b>' + x + '</b>' for x in list(goals_output_df.columns)],
                # fill_color='#b9e2ff',
                line_color='darkslategray',
                align='center',
                font=dict(color='black', family="Lato", size=20),
                height=30
                ),
    cells=dict(values=[goals_output_df[column] for column in goals_output_df.columns],
            #    fill_color='#e6f2fd',
               line_color='darkslategray',
               align='left',
               font=dict(color='black', family="Lato", size=20),
               height=30
               ))
])

fig.update_layout(
title="<b>Output summary for %s</b>"%question.strip('question'),
font=dict(
    family="Lato",
    size=18,
    color="#000000"))

fig.write_html(os.path.join(question_dir, "results/output.html"))

Run Code Online (Sandbox Code Playgroud)

该表包含一个名为“Output”的列,每行可以具有三个值之一:“YES”、“NO”和“BORDERLINE”。

我希望能够更改“输出”列中文本的颜色,使“是”为绿色,“否”为红色,“边界线”为蓝色。

知道我怎么做吗?Plotly 文档似乎没有帮助。

html css python pandas plotly

2
推荐指数
1
解决办法
3155
查看次数