我想要一个特定的实现,以便用户提供一个文本块,如:

“Requirements
– Working kNowledge,on LAMP Environment using Linux,Apache 2,
MySQL 5 and PHP 5,
– KNowledge of Web 2.0 Standards
– Comfortable with JSON
– Hands on Experience on working with Frameworks,Zend,OOPs
– Cross browser Javascripting,JQuery etc.
– KNowledge of Version Control Software such as sub-version will be
preferable.”

我想要做的是自动选择相关的关键字并创建标签/关键字,因此对于上面的文本,相关的标签应该是:MysqL,PHP,json,jquery,版本控制,oop,web2.0,javascript

我怎样才能在PHP / Javascript等中做到这一点?一个headstart真的很有帮助.

一个非常天真的方法是从文本中删除常见的 stopwords,留下更多有意义的单词,如“标准”,“JSON”等.但是你仍会得到很多噪音,所以你可以考虑像 OpenCalais那样的服务对您的文本进行相当复杂的分析.

更新:

好的,我之前回答中的链接指向了实现,但是你要求一个,所以这里有一个简单的:

function stopWords($text,$stopwords) {

  // Remove line breaks and spaces from stopwords
    $stopwords = array_map(function($x){return trim(strtolower($x));},$stopwords);

  // Replace all non-word chars with comma
  $pattern = '/[0-9\W]/';
  $text = preg_replace($pattern,',$text);

  // Create an array from $text
  $text_array = explode(",",$text);

  // remove whitespace and lowercase words in $text
  $text_array = array_map(function($x){return trim(strtolower($x));},$text_array);

  foreach ($text_array as $term) {
    if (!in_array($term,$stopwords)) {
      $keywords[] = $term;
    }
  };

  return array_filter($keywords);
}

$stopwords = file('stop_words.txt');
$text = "Requirements - Working kNowledge,on LAMP Environment using Linux,MysqL 5 and PHP 5,- KNowledge of Web 2.0 Standards - Comfortable with JSON - Hands on Experience on working with Frameworks,OOPs - Cross browser Javascripting,JQuery etc. - KNowledge of Version Control Software such as sub-version will be preferable.";

print_r(stopWords($text,$stopwords));

你可以在这个Gist中看到这个,以及stop_word.txt的内容.

在示例文本上运行上面的内容会生成以下数组:

Array
(
    [0] => requirements
    [4] => linux
    [6] => apache
    [10] => MysqL
    [13] => PHP
    [25] => json
    [28] => frameworks
    [30] => zend
    [34] => browser
    [35] => javascripting
    [37] => jquery
    [38] => etc
    [42] => software
    [43] => preferable
)

所以,就像我说的那样,这有些天真并且可以使用更多的优化(加上它很慢),但它会从文本中提取更相关的关键字.您还需要对停用词进行一些微调.捕获像Web 2.0这样的术语将非常困难,所以我认为你最好使用像OpenCalais这样可以理解文本并返回实体和引用列表的严肃服务. DocumentCloud依靠这项服务从文件中收集信息.

此外,对于客户端实现,您可以使用JavaScript执行几乎相同的操作,并且可能更清晰(尽管对于客户端来说可能会很慢).

php – 从文本块中提取相关标记/关键字的更多相关文章

  1. Swift社交应用文本输入优化汇总

    本文将汇总一下Swift社交应用文本输入优化技巧。

  2. Swift2.0新特性

    也体现了Swift的安全性为本的核心理念。感觉脑洞小开哦~错误处理try,catch语句的增加Swift2.0中提供了对错误处理更好的支持,增加了try-catch语句。我们还需要在我们的方法中抛出这些异常:现在调用这个方法的时候,就可以通过try,catch来处理异常情况了:guard关键字Swift2.0中新引入了一个叫做guard的关键字用于条件判断处理。Swift2.0是一个重大的改进,包括了很多的优化与改动,这里面只介绍了其中一些比较显著的优化与更新。

  3. 创建自注册的Swift UI 控件

    UIKit的UITextField控件的placeholder属性就是用来干这个的。方式2:NSNotificationCenterNSNotificationCenter通过UITextViewTextDidChangeNotification通知来告诉你用户在TextView中输入或删除了某些字符。一般,我们在对象的deinit方法中向NSNotificationCenter注销该对象。但是在Swift中,我们无法在扩展中使用deinit方法。TheNotificationProxyatRunTime

  4. 在 Cocoa 中实现 ICU 文本变换

    ICU库提供了一整套强大的文本变换功能,在处理用户输入、特别是当你的程序需要处理一些英语之外的语言或者非拉丁字符时非常有用。在Apple的平台中,字符串变换一直以来都是通过CoreFoundation的CFStringTranform函数来实现。输入变换结果HELLOWORLDLowerhelloworld仅转换元音字母为小写。拉丁到ASCII这一步会移除变音符以及会把ASCII码范围之外的字符和标点符号转换成ASCII中与之最为接近的版本。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@fox

  5. Swift final关键字

    final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。Swift中,final关键字可以在class、func和var前修饰。1,通过使用final提升程序性能通常认为final能改成性能,因为编译器能从final中获取额外的信息,因此可以对类或者方法调用进行额外的优化处理。所以如果抱着提升性能的想法,就算把所有不需要继承的方法、类都加上final关键字,也没多大作用。

  6. Swift - final关键字的介绍,以及使用场景

    Swift-final关键字的介绍,以及使用场景final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。Swift中,final关键字可以在class、func和var前修饰。1,想通过使用final提升程序性能-效果有限通常认为final能改成性能,因为编译器能从final中获取额外的信息,因此可以对类或者方法调用进行额外的优化处理。所以如果抱着提升性能的想法,就算把所有不需要继承的方法、类都加上final关键字,也没多大作用。

  7. HTML5 textarea高度自适应的两种方案

    这篇文章主要介绍了HTML5 textarea高度自适应的两种方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  8. 初探正则表达式

    正则表达式在线理解工具用途正则表达式是一种工具和其他工具一样,他是为了解决某一类专门的问题发明的。正则表达式语言用来构造正则表达式,正则表达式用来完成搜索和替换的操作。以下的例子都是合法的正则表达式:匹配单个字符串1.匹配纯文本-文本-helloworld!-正则表达式-hello-结果-helloworld!这里使用正则表达式的是纯文本,它将匹配原始文本里面的所有hello。

  9. 正则表达式快速入门教程

    正则表达式30分钟入门教程版本:v2.31作者:deerchao转载请注明来源目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?正则表达式就是用于描述这些规则的工具。假设你在一篇英文小说里查找hi,你可以使用正则表达式hi。如果同时使用其它元字符,我们就能构造出功能更强大的正则表达式。正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。对中文/汉字的特殊处理是由.Net提供的正则表达

  10. 正则表达式30分钟入门教程

    入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。正则表达式就是用于描述这些规则的工具。正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部