当前位置:  开发笔记 > 编程语言 > 正文

NLP项目,python或C++

如何解决《NLP项目,python或C++》经验,为你挑选了2个好方法。

我们正在研究阿拉伯语自然语言处理项目,我们已经限制了用Python或C++(和Boost库)编写代码的选择.我们正在考虑以下几点:

蟒蛇

比C++慢(目前正在努力使Python更快)

更好的UTF8支持

更快地编写测试并尝试不同的算法

C++

比Python快

熟悉的代码,每个程序员都知道类似C或C的代码

项目完成后,将项目移植到另一种编程语言应该不是很困难.

您认为哪个更好,更适合该项目?



1> Otto Allmend..:

虽然这是主观的和议论性的,但有证据表明你可以像在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

[...]

C编程语言是一种高效的低级语言,在操作系统和网络软件中很流行:

#include 
#include 

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;
}

编辑:我没有在C++/Boost中包含类似的代码,所以我添加了一个类似的代码示例,尽管与Boost文档不完全相同.请注意,这不是最干净的版本.

// char_sep_example_1.cpp
#include 
#include 
#include 

    int main()
    {
      std::string str = ";;Hello|world||-foo--bar;yow;baz|";
      typedef boost::tokenizer > 
        tokenizer;
      boost::char_separator 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;
    }



2> Mike DeSimon..:

用Python编写它,对它进行分析,如果你需要加速它的部分速度,用C++编写它们.Python和C++足够相似,C++的"熟悉"优势很快就会无关紧要.

我说这是一个主要用C++开发并且最近认真对待Python的人.我喜欢他们两个,但我可以让Python代码比C++更快地运行.说真的,dict打败std::map可用性.

PS这里有一些关于如何从Python调用C代码的信息.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有