虽然这是主观的和议论性的,但有证据表明你可以像在NLTK中一样在python中编写一个成功的NLP项目.他们还比较了不同语言的NLP功能:
(引自比较)
许多编程语言已用于NLP.正如前言中所解释的,我们选择了Python,因为我们相信它非常适合NLP的特殊要求.在这里,我们简要介绍几种编程语言,简单的阅读文本和打印结束的单词.我们从Python版本开始,我们认为它很容易解释,即使是非Python程序员也是如此:
import sys
for line in sys.stdin:
for word in line.split():
if word.endswith('ing'):
print word
Run Code Online (Sandbox Code Playgroud)
[...]
C编程语言是一种高效的低级语言,在操作系统和网络软件中很流行:
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv) {
int i = 0;
int c = 1;
char buffer[1024];
while (c != EOF) {
c = fgetc(stdin);
if ( (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ) {
buffer[i++] = (char) c;
continue;
} else {
if (i > 2 && (strncmp(buffer+i-3, "ing", 3) == 0 || strncmp(buffer+i-3, "ING", 3) == 0 ) ) {
buffer[i] = 0;
puts(buffer);
}
i = 0;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我没有在C++/Boost中包含类似的代码,所以我添加了一个类似的代码示例,尽管与Boost文档不完全相同.请注意,这不是最干净的版本.
// char_sep_example_1.cpp
#include <iostream>
#include <boost/tokenizer.hpp>
#include <string>
int main()
{
std::string str = ";;Hello|world||-foo--bar;yow;baz|";
typedef boost::tokenizer<boost::char_separator<char> >
tokenizer;
boost::char_separator<char> sep("-;|");
tokenizer tokens(str, sep);
for (tokenizer::iterator tok_iter = tokens.begin();
tok_iter != tokens.end(); ++tok_iter)
std::cout << "<" << *tok_iter << "> ";
std::cout << "\n";
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
用Python编写它,对它进行分析,如果你需要加速它的部分速度,用C++编写它们.Python和C++足够相似,C++的"熟悉"优势很快就会无关紧要.
我说这是一个主要用C++开发并且最近认真对待Python的人.我喜欢他们两个,但我可以让Python代码比C++更快地运行.说真的,dict
打败std::map
可用性.
PS这里有一些关于如何从Python调用C代码的信息.