假设我有一个我想分析的域名列表。除非域名是连字符,否则我看不到一种特别简单的方法来“提取”域中使用的关键字。但我看到它在DomainTools.com,Estibot.com等网站上完成。例如:
ilikecheese.com becomes "i like cheese"
sanfranciscohotels.com becomes "san francisco hotels"
...
有效和有效地实现这一目标的任何建议吗?
编辑:我想用PHP编写。
答案 0 :(得分:6)
好的,我运行了我为this SO question编写的脚本,进行了一些小的更改 - 使用日志概率来避免下溢,并修改它以读取多个文件作为语料库。
对于我的语料库,我从项目Gutenberg下载了一堆文件 - 没有真正的方法,只需从etext00,etext01和etext02中获取所有英语文件。
以下是结果,我为每个组合保存了前三名。
expertsexchange: 97 possibilities - experts exchange -23.71 - expert sex change -31.46 - experts ex change -33.86 penisland: 11 possibilities - pen island -20.54 - penis land -22.64 - pen is land -25.06 choosespain: 28 possibilities - choose spain -21.17 - chooses pain -23.06 - choose spa in -29.41 kidsexpress: 15 possibilities - kids express -23.56 - kid sex press -32.65 - kids ex press -34.98 childrenswear: 34 possibilities - children swear -19.85 - childrens wear -25.26 - child ren swear -32.70 dicksonweb: 8 possibilities - dickson web -27.09 - dick son web -30.51 - dicks on web -33.63
答案 1 :(得分:3)
可能想查看this SO question。
答案 2 :(得分:3)
您需要开发一种可能会在域外获得匹配的启发式算法。我这样做的方法是首先找到一大堆文本。例如,您可以下载Wikipedia。
接下来拿你的语料库,并结合每两个相邻的单词。例如,如果您的句子是:
quick brown fox jumps over the lazy dog
您将创建一个列表:
quickbrown
brownfox
foxjumps
jumpsover
overthe
thelazy
lazydog
每个都有一个计数。在解析语料库时,您将跟踪每两个单词的频率对。此外,对于每对,您需要对原始的两个单词进行排序。
按频率对此列表进行排序,然后尝试根据这些字词在您的域中查找匹配项。
最后,对未注册的前两个单词短语进行域名检查!
我认为像DomainTool这样的网站会列出排名最高的单词。然后他们首先尝试解析这些词。根据目的,您可能需要考虑使用MTurk来完成工作。不同的人会以不同的方式解析相同的单词,并且可能不会与单词的常见程度成比例。
答案 3 :(得分:2)
choosespain.com kidsexpress.com childrenswear.com dicksonweb.com
如果你想尝试用字典解析网址,那就玩得开心(还有一位优秀的律师)。
如果您可以找到相同的字符但在网站上用空格分隔,则可能会做得更好。
其他可能性:从ssl证书中提取数据;查询顶级域名服务器; 访问域名服务器(TLD);或使用“whois”工具或服务之一(只是google“whois”)。
答案 4 :(得分:1)
如果您有一个有效单词列表,则可以遍历您的域字符串,并尝试每次使用回溯算法切断有效单词。如果你设法用尽所有单词,那么你就完成了。请注意,时间复杂度并非最佳:)
答案 5 :(得分:1)
function getwords( $string ) {
if( strpos($string,"xn--") !== false ) {
return false;
}
$string = trim( str_replace( '-', '', $string ) );
$pspell = pspell_new( 'en' );
$check = array();
$words = array();
for( $j = 0; $j < ( strlen( $string ) - 5 ); $j++ ) {
for( $i = 4; $i < strlen( $string ); $i++ ) {
if( pspell_check( $pspell, substr( $string, $j, $i ) ) ) {
$check[$j]++;
$words[] = substr( $string, $j, $i );
}
}
}
$words = array_unique( $words );
if( count( $check ) > 0 ) {
return $words;
}
return false;
}
print_r( getwords( 'ilikecheesehotels' ) );
Array
(
[0] => like
[1] => cheese
[2] => hotel
[3] => hotels
)
作为pspell的一个简单的开始。你可能想要比较结果,看看你是否得到了一个没有“s”的单词的词干并将它们合并。
答案 6 :(得分:0)
您必须使用针对域条目的字典引擎来查找有效单词,并针对结果运行该字典引擎以确保结果是有效单词。