小编Pie*_*rre的帖子

如何在NLTK中进行依赖解析?

通过NLTK书,不清楚如何从给定的句子生成依赖树.

本书的相关部分:依赖语法的子章节给出了一个示例图,但它没有说明如何解析句子来提出这些关系 - 或者我可能缺少NLP中的一些基本内容?

编辑: 我想要类似于斯坦福解析器所做的事情:给出一句"我在睡梦中拍摄大象",它应该返回如下内容:

nsubj(shot-2, I-1)
det(elephant-4, an-3)
dobj(shot-2, elephant-4)
prep(shot-2, in-5)
poss(sleep-7, my-6)
pobj(in-5, sleep-7)
Run Code Online (Sandbox Code Playgroud)

python grammar nlp nltk

33
推荐指数
3
解决办法
4万
查看次数

为什么我默认的移动构造函数不是 noexcept?

根据this question的答案,可以noexcept在某些条件下定义默认移动构造函数。例如,下面的类生成一个noexcept移动构造函数:

class C {};
Run Code Online (Sandbox Code Playgroud)

根据对这个问题的回答,使用说明= default符定义的移动构造函数将生成与隐式定义的移动构造函数相同的构造函数。所以,如果我正确理解它,下面的类应该生成一个noexcept移动构造函数:

class D {
    D(D&&) = default;
};
Run Code Online (Sandbox Code Playgroud)

要检查,我使用的std::is_nothrow_move_constructible功能,看是否CD有一个noexcept移动构造函数:

#include <type_traits>

int main() {
    static_assert(std::is_nothrow_move_constructible<C>::value, "C should be noexcept MoveConstructible");
    static_assert(std::is_nothrow_move_constructible<D>::value, "D should be noexcept MoveConstructible");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我收到此错误:

$ g++ toy.cpp -o toy
toy.cpp: In function ‘int main()’:
toy.cpp:16:5: error: static assertion failed: D should be noexcept MoveConstructible
     static_assert(std::is_nothrow_move_constructible<D>::value, "D should be …
Run Code Online (Sandbox Code Playgroud)

c++ move-constructor noexcept c++11

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

Sklearn.KMeans:如何避免内存或值错误?

我正在研究一个图像分类问题,我正在创建一个单词模型.为此,我提取了所有图像的SIFT描述符,我必须使用KMeans算法来查找要用作我的文字包的中心.

这是我的数据:

  • 图片数量:1584
  • SIFT描述符的数量(32个元素的向量):571685
  • 中心数量:15840

所以我运行了一个KMeans算法来计算我的中心:

dico = pickle.load(open('./dico.bin', 'rb')) # np.shape(dico) = (571685, 32)
k = np.size(os.listdir(img_path)) * 10 # = 1584 * 10

kmeans = KMeans(n_clusters=k, n_init=1, verbose=1).fit(dico)

pickle.dump(kmeans, open('./kmeans.bin', 'wb'))
pickle.dump(kmeans.cluster_centers_, open('./dico_reduit.bin', 'wb'))
Run Code Online (Sandbox Code Playgroud)

有了这段代码,我得到了一个内存错误,因为我的笔记本电脑上没有足够的内存(只有2GB)所以我决定将中心数除以2并随机选择一半的SIFT描述符.这一次,我得到了Value Error : array is too big.

如果没有内存问题,我该怎么做才能获得相关结果?

python memory k-means scikit-learn

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

当T具有非平凡的析构函数时,可以将类型T的对象常量初始化吗?

让我们看一下这段代码示例:

class D
{
    public:
    constexpr D(int val) : i(val) { };
    ~D() { };

    private:
    int i;
};

D d(3);
Run Code Online (Sandbox Code Playgroud)

根据文档,D应该被常量初始化

只有以下变量会被常量初始化:[...]
2.如果构造函数是constexpr并且所有构造函数参数(包括隐式转换)都是常量表达式,则通过构造函数调用初始化的类类型的静态或线程本地对象并且如果构造函数的初始值设定项列表中的初始值设定项和类成员的花括号或等号初始值设定项仅包含常量表达式。

事实上,d通过构造函数调用初始化的构造函数D就是constexpr和我的观点(3)是一个常量表达式。

但是,要指定编译器可以在编译时评估变量的值,可以使用constexprspecifier。但是,在这种情况下,由于D不是LiteralType,所以不会编译,因为它定义了一个非平凡的构造函数。

因此,在我的代码段中,是否d真的对常量进行了初始化?如果是这样,为什么我不能使用constexpr说明符?

c++ constexpr c++11

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

使用cv2.imshow时出错(未指定错误)

我正在按照本教程进行角点检测,我必须使用cv2.imshow.这是我的代码:

import cv2
import numpy as np

filename = '1.jpg'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)

#result is dilated for marking the corners, not important
dst = cv2.dilate(dst,None)

# Threshold for an optimal value, it may vary depending on the image.
img[dst>0.01*dst.max()]=[0,0,255]

cv2.imshow('dst',img)
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev …
Run Code Online (Sandbox Code Playgroud)

python opencv anaconda

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

如何避免星型模式中事实表之间的连接?

我正在尝试使用星型模式为我的数据仓库建模,但我有一个问题来避免事实表之间的连接。
为了简单了解我的问题,我想收集在我的操作系统上发生的所有事件。因此,我可以创建一个event具有某些维度的事实表,例如datetimeuser。问题是我想收集不同类型的事件:硬件事件和软件事件。
问题是这些事件的维度不同。例如,对于硬件事件,我可以有physical_componentrelated_driver维度,对于软件事件,software_nameonline_application维度(这只是一些示例,要记住的想法是事实event可以专门用于具有特定维度的某些特定事件)。
在关系模型中,我会有 3 个这样组织的表: 在此处输入图片说明
问题是:如何处理星型模式中事实表之间的连接?


我想象了 4 个想法,但我不确定其中一个是否适合这种情况。
第一个是保留关系数据库中使用的模型并添加如下维度表:
在此处输入图片说明
在这种情况下,问题是我们仍然有事实表之间的连接,并且需要JOIN在我们所有的查询中使用SQL 语句。
第二个是仅创建 2 个将复制共享维度(日期时间和用户)的事实表,并创建一个汇总所有事件的物化视图事件:
在此处输入图片说明
这里的问题是:如果我想对物化视图进行查询会发生什么?根据我在 Oracle 文档中读到的内容,我们不必直接在物化视图上进行查询,但我们必须让查询重写过程发挥作用。
第三种是只创建一个事实表,其中包含事件(硬件或软件)的所有可能信息:
在此处输入图片说明
这一次,问题是我的事实表将包含很多NULL值。
最后一个是创建3个事实表(没有物化视图这段时间)是这样的:
在此处输入图片说明
这一次,问题是所有事件都存在于事实表event和它自己的表中。因为我们将存储大量数据,所以我不确定这种重复是否是一个好主意。
那么最好的解决方案是什么?或者它是否存在第五个解决方案?

database-design data-warehouse star-schema

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

_tcslen 和 _tcsclen 有什么区别?

我开发了一个必须与不同字符集编码兼容的应用程序。为此,我总是使用TCHAR*而不是char*定义字符串。因此我用来_tcslen获取字符串的大小。

今天,我在公司的版本控制系统上看到我的一位同事编辑了我编写的行以代替_tcslen使用_tcsclen

我发现的唯一一个谈论这个函数特殊性的链接是这个,它没有解释这些函数之间的区别。

_tcslen有人可以解释一下和之间的区别_tcsclen吗?

c++ winapi function string-length

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

如何在Windows 10上安装Visual Studio 2010(v100)平台工具集?

我最近安装了 Windows 10,并且必须构建一些使用 Visual Studio 2010 (v100) 平台工具集的应用程序。不幸的是,在我的项目的属性页面上,写着工具包未安装。

我尝试修改 Visual Studio 2017 的安装,但没有找到 v100 工具集。

在哪里可以找到 Visual Studio 2010 平台工具集?

visual-studio-2010 windows-10 visual-studio-2017

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

为什么我有读权限却读不到/proc/pid/mem?

我想读取与我的进程之一(PID 2614)关联的内存文件的内容。我开始编写一个非常小的 C 程序来检查我是否可以打开它:

\n
#include <stdio.h>\n#include <errno.h>\n\nint main() {\n    FILE* f = fopen("/proc/2614/mem", "rb");\n    if(!f) {\n        printf("Error %d\\n", errno);\n        return -1;\n    }\n\n    fclose(f);\n\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当我运行它时,我收到权限被拒绝错误:

\n
$ gcc -o read read.c && ./read\nError 13\n
Run Code Online (Sandbox Code Playgroud)\n

但是,我已阅读许可:

\n
$ whoami\npierre\n$ ll /proc/2614/mem\n-rw------- 1 pierre pierre 0 ao\xc3\xbbt  18 19:44 /proc/2614/mem\n
Run Code Online (Sandbox Code Playgroud)\n

这是怎么回事?

\n

我知道可以读取该文件,因为我可以在另一个系统上执行此操作(并且其他一些SO 答案已经这样做了)。以下是有关我的系统的信息:

\n
$ uname -a\nLinux pierre-computer 4.15.0-112-generic #113~16.04.1-Ubuntu SMP Fri Jul 10 04:37:08 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux\n
Run Code Online (Sandbox Code Playgroud)\n

以及我可以阅读它的系统的信息: …

c linux memory

5
推荐指数
0
解决办法
2420
查看次数

为什么 != 运算符比 = 运算符快?

我有一个 SQLite 数据库,我执行以下查询:

SELECT
    category,
    name,
    COUNT(side.id) as nb
FROM main
LEFT JOIN side
    ON main.id = side.id_main
WHERE category != 3
GROUP BY category, name;
Run Code Online (Sandbox Code Playgroud)

此查询大约需要 0.3 秒并返回 8000 行。这是关联的查询计划:

id  parent  notused detail
7   0   0   SCAN TABLE main USING COVERING INDEX idx_main
19  0   0   SEARCH TABLE side USING AUTOMATIC COVERING INDEX (id_main=?)
Run Code Online (Sandbox Code Playgroud)

现在,我只想选择一个类别。所以,我改写了我的WHERE条款是这样的:

id  parent  notused detail
7   0   0   SCAN TABLE main USING COVERING INDEX idx_main
19  0   0   SEARCH TABLE side USING …
Run Code Online (Sandbox Code Playgroud)

sql sqlite

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