2014-05-09 26 views
0

我正在使用node natural tokenizer功能,它將句子拆分爲單詞。通常它應該工作作爲如何避免自然爲node.js分裂具有特殊字符的單詞

var natural = require('natural'), 
tokenizer = new natural.WordTokenizer(); 
console.log(tokenizer.tokenize("your dog has't flees.")); 
// Returns [ 'your', 'dog', 'has', 'n't, 'flees' ] 

它工作正常,但是,與德語或法語單詞時,它分裂了的話一分爲二,如

var natural = require('natural'), 
tokenizer = new natural.WordTokenizer(); 
console.log(tokenizer.tokenize("fußball")); 
// Returns ['fu', 'ball'] 

這是不正確的。

任何人都知道如何避免這種情況?

或者你也許知道一個簡單的方法來將句子拆分成JavaScript/Node.js中的單詞?

謝謝!

+0

刪除標點你不想使用正則表達式然後'sentence.split('');'? – Andy

+0

但我在談論特殊重音字符,如ß,ç等。標點符號沒有問題。 –

+0

http://jsfiddle.net/andyuws/Gk9jn/1/,'split'可以正常工作,但是你會想要刪除全站和逗號就是我所說的。 – Andy

回答

1
var data = "your fußball, hasn't! flees."; 

// Remove unwanted punctuation, in this case full-stops, 
// commas, and exclamation marks. 
data = data.replace(/[.,!]/g, ''); 

// split the words up 
data.split(' '); // ["your", "fußball", "hasn't", "flees"] 

Demo

1

自然文檔狀態

[...]目前,大部分的算法是英語特有的

所以,我不會期望它的工作失這個盒子沒有你的工作。

但是,如果你想要做的是分裂沿着空白邊界的字符串,使用這樣的:

var s = "your dog hasn't flees."; 
console.log(s.split(/\s+/)); // ["your", "dog", "hasn't", "flees."]