小编Sil*_*t-J的帖子

Python(NLTK)-提取名词短语的更有效方法?

我有一个涉及大量文本数据的机器学习任务。我想在训练文本中识别并提取名词短语,以便稍后在管道中将其用于特征构建。我已经从文本中提取了我想要的名词短语的类型,但是我对NLTK还是很陌生,所以我以一种可以分解列表理解的每一步的方式来解决这个问题,如下所示。

但是我真正的问题是,我在这里重塑车轮吗?有没有我看不到的更快的方法?

import nltk
import pandas as pd

myData = pd.read_excel("\User\train_.xlsx")
texts = myData['message']

# Defining a grammar & Parser
NP = "NP: {(<V\w+>|<NN\w?>)+.*<NN\w?>}"
chunkr = nltk.RegexpParser(NP)

tokens = [nltk.word_tokenize(i) for i in texts]

tag_list = [nltk.pos_tag(w) for w in tokens]

phrases = [chunkr.parse(sublist) for sublist in tag_list]

leaves = [[subtree.leaves() for subtree in tree.subtrees(filter = lambda t: t.label == 'NP')] for tree in phrases]
Run Code Online (Sandbox Code Playgroud)

将我们最终得到的元组列表的列表扁平化为仅元组列表的列表

leaves = [tupls for sublists in leaves for tupls in sublists]
Run Code Online (Sandbox Code Playgroud)

将提取的术语加入一个二元组

nounphrases = …
Run Code Online (Sandbox Code Playgroud)

nlp nltk python-3.x pandas text-chunking

6
推荐指数
1
解决办法
5159
查看次数

Pandas DataFrame - 根据其他列分配 1,0 个值

我有一个包含国家名称及其能源输出百分比的数据框。我需要添加一个新列,根据该国的能源产出是高于还是低于能源产出的中位数,指定 1 或 0。一些虚拟代码是:

import pandas as pd
def answer():
    df = pd.DataFrame({'name':['china', 'america', 'canada'], 'output': [33.2, 15.0, 5.0]})
    df['newcol'] = df.where(df['output'] > df['output'].median(), 1, 0)
    return df['newcol']
answer()
Run Code Online (Sandbox Code Playgroud)

代码返回

ValueError: 错误数量的项目通过 2,放置意味着 1

我觉得这是一个非常简单的修复程序,但我不熟悉Pandas. 请帮助结束我的沮丧

python series calculated-columns dataframe pandas

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

使用 cv2.rectangle() 的多个边界框

我目前有边界框的坐标数据,包含在嵌套数据结构中,如下所示:

 defaultdict(list,
            {'giraffe': [{'conf': 0.9869,
               'coords': {'center_x': 0.360333,
                'center_y': 0.532274,
                'height': 0.596343,
                'width': 0.144651}},
              {'conf': 0.253321,
               'coords': {'center_x': 0.016296,
                'center_y': 0.565007,
                'height': 0.580526,
                'width': 0.03498}}],
             'zebra': [{'conf': 0.998863,
               'coords': {'center_x': 0.545974,
                'center_y': 0.693267,
                'height': 0.301859,
                'width': 0.257102}}]})
Run Code Online (Sandbox Code Playgroud)

我想迭代数据结构 ( img_obj_data) 并为每个 object_class 的每个对象绘制矩形。

然后我想保存图像(绘制了方框),以便稍后打开它。

我的第一次尝试如下:

import cv2

img = cv2.imread(img_path)
img_h, img_w = img.shape[:2]

for obj_class in img_obj_data.keys():
    for sub_dict in img_obj_data[obj_class]:
        x, y, w, h = sub_dict['coords'].values()
        
        # coords cannot be floats
        x = int(x*img_w)
        y = int(y*img_h) …
Run Code Online (Sandbox Code Playgroud)

python opencv bounding-box yolo

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