小编El_*_*rón的帖子

使用单词列表计算Levenshtein距离

首先,我想说我是python中的新手.我试图计算许多单词列表的Levenshtein距离.直到现在我成功编写了一对单词的代码,但是我在列表中遇到了一些问题.我只是有两个列表,其中一个在另一个之下,就像这样:carlos stiv peter

我想使用Levenshtein距离进行相似性处理.somebady可以告诉我如何加载列表然后使用函数计算距离?

我会感激的!

这是我的代码只有两个字符串:

#!/usr/bin/env python
# -*- coding=utf-8 -*-

def lev_dist(source, target):
    if source == target:
        return 0

#words = open(test_file.txt,'r').read().split();

    # Prepare matrix
    slen, tlen = len(source), len(target)
    dist = [[0 for i in range(tlen+1)] for x in range(slen+1)]
    for i in xrange(slen+1):
        dist[i][0] = i
    for j in xrange(tlen+1):
        dist[0][j] = j

    # Counting distance
    for i in xrange(slen):
        for j in xrange(tlen):
            cost = 0 if source[i] == target[j] else 1
            dist[i+1][j+1] = min( …
Run Code Online (Sandbox Code Playgroud)

python levenshtein-distance

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

Pandas - 具有来自另一列的条件的groupby列

我正在努力研究如何使用条件对多个列值进行分组:

以下是我的数据作为pandas数据帧的样子:

id      trigger     timestamp
1       started     2017-10-01 14:00:1
1       ended       2017-10-04 12:00:1
2       started     2017-10-02 10:00:1
1       started     2017-10-03 11:00:1
2       ended       2017-10-04 12:00:1    
2       started     2017-10-05 15:00:1
1       ended       2017-10-05 16:00:1
2       ended       2017-10-05 17:00:1
Run Code Online (Sandbox Code Playgroud)

我的目标是找出按ID分组的日期之间的日/小时或分钟差异.

我的输出看起来应该更像这样(在hrs中的diff):

id      trigger     timestamp           trigger     timestamp               diff
1       started     2017-10-01 14:00:1  ended       2017-10-04 12:00:1      70
1       started     2017-10-03 11:00:1  ended       2017-10-05 16:00:1      53
2       started     2017-10-02 10:00:1  ended       2017-10-04 12:00:1      26
2       started     2017-10-05 15:00:1  ended       2017-10-05 17:00:1      2
Run Code Online (Sandbox Code Playgroud)

我尝试了很多选择,但我不能提供最有效的解决方案.

这是我的代码,直到现在:

首先,我尝试将数据拆分为"已启动"和"已结束": …

python group-by dataframe pandas pandas-groupby

7
推荐指数
1
解决办法
1596
查看次数

如何将共生矩阵转换为稀疏矩阵

我开始处理稀疏矩阵,所以我对这个主题并不十分精通.我的问题是,我从单词列表中得到一个简单的合并矩阵,只是一个二维共生矩阵,逐字逐字计算一个单词在同一个上下文中出现的次数.由于语料库不是很大,所以矩阵非常稀疏.我想将它转换为稀疏矩阵,以便能够更好地处理它,最后做一些矩阵乘法.这是我到目前为止所做的事情(只有第一部分,其余部分只是输出格式和清洁数据):

def matrix(from_corpus):    
d = defaultdict(lambda : defaultdict(int))
        heads = set() 
        trans = set()
        for text in corpus:
            d[text[0]][text[1]] += 1
            heads.add(text[0])
            trans.add(text[1])

        return d,heads,trans
Run Code Online (Sandbox Code Playgroud)

我的想法是创建一个新功能:

def matrix_to_sparse(d):
    A = sparse.lil_matrix(d)
Run Code Online (Sandbox Code Playgroud)

这有意义吗?然而,这不起作用,不知道我怎么没有获得稀疏矩阵的方式.我应该更好地使用numpy数组吗?什么是最好的方法来做到这一点.我想比较许多处理矩阵的方法.

如果有人能让我朝着这个方向前进,那就太好了.

python scipy sparse-matrix

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

如何创建单词对列表

我想从单词列表中创建一个由制表符分隔的单词对列表.我认为一个选项可能是创建一个带"范围"的矩阵,因为我想让所有的单词相互结合.我需要单词对列表进行进一步分析.

从单词列表:

mama
papa
sister
brother
Run Code Online (Sandbox Code Playgroud)

应该是输出

mama papa
sister brother
mama sister
papa sister
brother mama
Run Code Online (Sandbox Code Playgroud)

等等....

谁知道最好的方法是什么?

python list cpu-word

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

训练自己的模型并添加新实体

我一直在尝试使用与#887使用的方法相同的方法来训练模型,仅用于测试用例。我有一个问题,什么是训练语料库导入spacy的最佳格式?我有一个文本文件,其中包含要使用新实体进行标记的实体列表。让我解释一下我的情况,我遵循这样的update.training脚本:

nlp = spacy.load('en_core_web_md', entity=False, parser=False)

ner= EntityRecognizer(nlp.vocab, entity_types=['FINANCE'])

for itn in range(5):
    random.shuffle(train_data)
    for raw_text, entity_offsets in train_data:
        doc = nlp.make_doc(raw_text)
        gold = GoldParse(doc, entities=entity_offsets)

        nlp.tagger(doc)
        ner.update(doc, gold)
ner.model.end_training()
Run Code Online (Sandbox Code Playgroud)

我将训练数据添加为entity_offsets:

train_data = [
    ('Monetary contracts are financial instruments between parties', [(23, 44, 'FINANCE')])
]
Run Code Online (Sandbox Code Playgroud)

这对于一个示例和新的实体标签来说效果很好。显然,我希望能够添加多个示例。想法是创建一个带有标记语句的文本文件,问题是spacy需要什么样的格式来训练数据,我应该保留示例中的entity_offset(对于千个句子来说这将是非常繁琐的任务)还是有另一种方法准备文件,例如:

financial instruments   FINANCE
contracts   FINANCE
Product OBJ
of O
Microsoft ORG
etc ...
Run Code Online (Sandbox Code Playgroud)

以及如何使用上述方法在语料库中传递语料库?我必须使用新创建的模型还是可以将新实体添加到旧模型中,如何实现?

更新 我设法导入了包含训练数据的文件,该文件将被上述训练方法识别。该列表将如下所示:

Financial instruments can be real or virtual documents, 0 21 FINANCE
The number of units of the financial …
Run Code Online (Sandbox Code Playgroud)

python named-entity-recognition spacy

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