Полагаю, вы видели ответы, такие как , этот , поскольку вы упоминаете, что не удаляете прослушиватели событий на дочерних элементах. Конечно, выполнить глубокое клонирование не получится, но что может сработать, так это создать неглубокое клонирование, а затем перенести дочерние узлы в клон. Это немного больше работы, но она будет делать то, что вы хотите.
Основная работа находится в setTimeout
, все остальное на самом деле просто настройка.
Здесь я присоединяю два прослушивателя событий щелчка: один к кнопке и один к контейнеру div. до 5 секунд setTimeout
, нажатие кнопки запустит обоих слушателей (поэтому вы увидите журналы консоли для КНОПКИ и DIV). После таймера вы все равно увидите событие BUTTON.
var rem = document.getElementById('rem');
var btn = document.getElementById('btn');
function onClick(e) {
var t = e.currentTarget
console.log(t.tagName);
}
rem.addEventListener('click', onClick);
btn.addEventListener('click', onClick);
setTimeout(() => {
console.log('removing events from div');
// shallow clone
var rem2 = rem.cloneNode(false);
// make and extract range to doc fragment
// for all contents of original div
var range = document.createRange();
range.setStartBefore(rem.firstChild);
range.setEndAfter(rem.lastChild);
var documentFragment = range.extractContents();
// append doc fragment to clone
// insert clone and remove old div
rem2.appendChild(documentFragment);
document.body.insertBefore(rem2, rem);
rem.remove();
}, 5000);
Heading
paragraph bold stuff
Добавить к ответу Robert Elwell:
Ни один из этого материала не ясен, и при этом любой из него не имеет "корректных ответов". См. также "nlp" и "естественный язык" ТАК теги.
Удачи! Это - нетривиальный проект.
Одна опция для того, что Вы делаете, является частотностью термина к обратной частоте документа или tf-idf. Сильные выражения будут иметь самое высокое взвешивание при этом вычислении. Проверьте если здесь: http://en.wikipedia.org/wiki/Tf-idf
Другая опция состоит в том, чтобы использовать что-то как наивный классификатор Байеса с помощью слов в качестве функций и найти то, что самые сильные функции находятся в тексте для определения класса документа. Это работало бы так же с максимальным энтропийным классификатором.
До инструментов, чтобы сделать это, лучший инструмент для запуска с был бы NLTK, библиотекой Python с обширной документацией и учебными руководствами: http://nltk.sourceforge.net/
Для Java, попробуйте OpenNLP: http://opennlp.sourceforge.net/
Для материала фразы, рассмотрите вторую возможность, которую я предложил при помощи биграмм и триграмм как функции, или как раз когда условия в tf-idf.
Удачи!
Вы могли использовать Windows Indexing Service, который идет с SDK платформы Windows. Или, просто считайте следующее введение для получения обзора обработки естественного языка.
http://msdn.microsoft.com/en-us/library/ms693179 (По сравнению с 85) .aspx http://i.msdn.microsoft.com/ms693179.wbr-index-create (en-us, По сравнению с 85) .gif
http://i.msdn.microsoft.com/ms693179.wbr-query-process (en-us, По сравнению с 85) .gif
Хорошо. Итак, у вас есть документ, содержащий текст и набор документов (корпус). Есть несколько способов сделать это.
Я бы предложил использовать движок Lucene (Java) для индексации ваших документов. Lucene поддерживает структуру данных (индекс), в которой хранится ряд документов. Сам документ - это структура данных, которая может содержать «поля» - например, автора, заголовок, текст и т. Д. Вы можете выбрать, какие поля индексируются, а какие нет.
Добавление документов в индекс тривиальное . Lucene также создан для скорости и может превосходно масштабироваться.
Затем вы хотите выяснить условия и частоты. Поскольку lucene уже вычислил это для вас в процессе индексации, вы можете использовать функцию docFreq и построить свою собственную функцию частоты термина, или используйте функцию getTermFreqVectors класса IndexReader, чтобы получить термины (и их частоту).
Теперь вам решать, как их сортировать и какие критерии вы хотите использовать для фильтрации нужных слов. Чтобы выяснить отношения, вы можете использовать Java API для библиотеки с открытым исходным кодом wordnet. Чтобы ограничить слова, используйте класс Lucene PorterStemFilter. С частью важности фразы сложнее, но как только вы дойдете до этого - вы можете поискать советы о том, как интегрировать поиск по n-граммам в Lucene (подсказка) .
Удачи!
используйте класс Lucene PorterStemFilter. С частью важности фразы сложнее, но как только вы дойдете до этого - вы можете поискать советы о том, как интегрировать поиск по n-граммам в Lucene (подсказка) .Удачи!
используйте класс Lucene PorterStemFilter. С частью важности фразы сложнее, но как только вы дойдете до этого - вы можете поискать советы о том, как интегрировать поиск по n-граммам в Lucene (подсказка) .Удачи!
Проверьте модель MapReduce, чтобы получить количество слов, а затем определите частоту, как описано в tf-idf
Hadoop - это инфраструктура Apache MapReduce, которую можно использовать для тяжелой задачи подсчета слов во многих документах. http://hadoop.apache.org/common/docs/current/mapred_tutorial.html
Вы не можете получить единую структуру, которая решила бы все, что вы хотите. Вы должны выбрать правильную комбинацию концепций и структуры, чтобы получить то, что вы хотите.
. Я также хотел бы посмотреть, есть ли способ идентифицировать важные фразы. (Вместо подсчета слов, количество слов в фразе составляет 2–3 слова)
Эта часть вашей проблемы называется извлечением словосочетаний . (По крайней мере, если принять «важные фразы» за фразы, которые встречаются значительно чаще, чем случайно.