Я использую это решение:
preg_match_all( '/<((?!<)(.|\n))*?\>/si', $content, $new);
var_dump($new);
Реферирование текста является довольно сложной темой. Если у Вас есть потребность сделать это серьезным способом, можно хотеть посмотреть на проекты как Лемур ( http://www.lemurproject.org/ ).
Однако, что я подозреваю, Вы действительно хотите, текстовый краткий обзор здесь. Если Вы знаете, какая часть документа содержит основной текст, найдите его пользующийся библиотекой парсинга HTML как BeautifulSoup и затем разделите HTML; возьмите первое предложение или первые символы N (который когда-либо подходит лучше всего), и используйте это. Вид абстрактного генератора бедного родственника:-)
Проверьте Инструментарий естественного языка . Это - очень полезная библиотека Python при выполнении какой-либо обработки текста.
Тогда взгляд данная статья HP Luhn (1958). Это описывает наивный, но эффективный метод генерации сводок текста.
Использование nltk.probability. FreqDist возражают для отслеживания, как часто слова появляются в тексте и затем выигрывают предложения согласно тому, сколько из самых частых слов появляется в них. Тогда выберите предложения с лучшими очками и вуаля, у Вас есть сводка документа.
я подозреваю, что NLTK должен иметь средство загружающихся документов от сети и избавляющийся от всех HTML-тэгов. Я не сделал такой вещи сам, но если Вы ищете корпусных читателей, Вы могли бы найти что-то полезным.
Ваш лучший выбор в этом случае состоял бы в том, чтобы пользоваться библиотекой парсинга HTML как BeautifulSoup ( http://www.crummy.com/software/BeautifulSoup/ )
Оттуда, можно выбрать, например, все страницы p
теги:
urllib2
импорта от страницы BeautifulSoup
импорта BeautifulSoup = urllib2.urlopen (" http://www.bloomberg.com/apps/newspid=20601103&sid=a8p0FQHnw.Yo&refer=us ")
суп = BeautifulSoup (страница)
soup.findAll ('p')
И затем, сделайте некоторый парсинг вокруг. Это зависит полностью на странице, поскольку каждый сайт структурирован по-другому. Можно стать удачливыми на некоторых сайтах, как они могут сделать, и Вы просто ищете p
тег с id#summary в нем, в то время как другие (как Blooberg) могли бы потребовать немного большего количества игры вокруг с.
Может быть, в это время параметр null
?
Это все равно должно быть возможно с VS2010 путем редактирования файла csproj aka msbuild.
Взято из этого потока на CodePlex.
<ItemGroup>
<JavaScriptFiles Remove="@(JavaScriptFiles)" />
<JavaScriptFiles Include="../js/2.js"/>
</ItemGroup>
<CompressorTask
JavaScriptFiles="@(JavaScriptFiles)"
ObfuscateJavaScript="True"
PreserveAllSemicolons="False"
DisableOptimizations="Nope"
EncodingType="Default"
DeleteJavaScriptFiles="false"
LineBreakPosition="-1"
JavaScriptOutputFile="../js/2.min.js"
LoggingType="ALittleBit"
ThreadCulture="en-au"
IsEvalIgnored="false"/>
<ItemGroup>
<JavaScriptFiles Remove="@(JavaScriptFiles)" />
<JavaScriptFiles Include="../js/3.js" />
<JavaScriptFiles Include="../js/4.js" />
</ItemGroup>
<CompressorTask
CssFiles="@(CssFiles)"
DeleteCssFiles="false"
CssOutputFile="../css/release.css"
CssCompressionType="YuiStockCompression"
JavaScriptFiles="@(JavaScriptFiles)"
ObfuscateJavaScript="True"
PreserveAllSemicolons="False"
DisableOptimizations="Nope"
EncodingType="Default"
DeleteJavaScriptFiles="false"
LineBreakPosition="-1"
JavaScriptOutputFile="../js/3.min.js"
LoggingType="ALittleBit"
ThreadCulture="en-au"
IsEvalIgnored="false"/>
-121--5044290-
У меня была такая же потребность, и лемур, хотя он и обладает возможностями суммирования, я обнаружил, что он до точка непригоден для использования. В выходные я использовал nltk для кодирования суммирующего модуля в python: https://github.com/thavelick/summarize
Я взял алгоритм из библиотеки Java Classifier4J здесь: http://classifier4j.sourceforge.net/ , но использовал nltk и python, где это возможно.
Вот основное использование:
>>> import summarize
SimpleSummarizer (в настоящее время единственный сумматор) делает сводку, используя предложения с наиболее частыми словами:
>>> ss = summarize.SimpleSummarizer()
>>> input = "NLTK is a python library for working human-written text. Summarize is a package that uses NLTK to create summaries."
>>> ss.summarize(input, 1)
'NLTK is a python library for working human-written text.'
Вы можете указать любое количество предложений в сводке по своему усмотрению.
>>> input = "NLTK is a python library for working human-written text. Summarize is a package that uses NLTK to create summaries. A Summariser is really cool. I don't think there are any other python summarisers."
>>> ss.summarize(input, 2)
"NLTK is a python library for working human-written text. I don't think there are any other python summarisers."
В отличие от исходного алгоритма Classifier4J, этот сумматор работает правильно с пунктуацией, отличной от периодов:
>>> input = "NLTK is a python library for working human-written text! Summarize is a package that uses NLTK to create summaries."
>>> ss.summarize(input, 1)
'NLTK is a python library for working human-written text!'
UPDATE
Я выпустил это (наконец!) под лицензией Apache 2,0, той же лицензией, что и nltk, и поместил модуль на гитуб (см. выше). Приветствуются любые материалы или предложения.