Изображение, эквивалентное из ActionLink в ASP.NET MVC

Короче:

NLTK не совершенен.

blockquote>

Примечание:

Начиная с версии NLTK 3.1 функция по умолчанию pos_tag больше не является старым английским маринованием MaxEnt .

Теперь это теггер персептрона из @ реализации Хоннибала , см. nltk.tag.pos_tag

>>> import inspect
>>> print inspect.getsource(pos_tag)
def pos_tag(tokens, tagset=None):
    tagger = PerceptronTagger()
    return _pos_tag(tokens, tagset, tagger) 

Тем не менее, лучше, но не идеально:

>>> from nltk import pos_tag
>>> pos_tag("The quick brown fox jumps over the lazy dog".split())
[('The', 'DT'), ('quick', 'JJ'), ('brown', 'NN'), ('fox', 'NN'), ('jumps', 'VBZ'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN')]

В какой-то момент, если кто-то хочет TL;DR решения, см. https://github.com/alvations/nltk_cli


В long:

Попробуйте использовать другой теггер (см. https://github.com/nltk/nltk/tree/develop/nltk/tag ), например:

  • HunPos
  • Stanford POS
  • Senna

Использование по умолчанию MaxEnt POS tagger из NLTK, т.е. nltk.pos_tag:

>>> from nltk import word_tokenize, pos_tag
>>> text = "The quick brown fox jumps over the lazy dog"
>>> pos_tag(word_tokenize(text))
[('The', 'DT'), ('quick', 'NN'), ('brown', 'NN'), ('fox', 'NN'), ('jumps', 'NNS'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'NN'), ('dog', 'NN')]

Использование тестера PSP в Stanford:

$ cd ~
$ wget http://nlp.stanford.edu/software/stanford-postagger-2015-04-20.zip
$ unzip stanford-postagger-2015-04-20.zip
$ mv stanford-postagger-2015-04-20 stanford-postagger
$ python
>>> from os.path import expanduser
>>> home = expanduser("~")
>>> from nltk.tag.stanford import POSTagger
>>> _path_to_model = home + '/stanford-postagger/models/english-bidirectional-distsim.tagger'
>>> _path_to_jar = home + '/stanford-postagger/stanford-postagger.jar'
>>> st = POSTagger(path_to_model=_path_to_model, path_to_jar=_path_to_jar)
>>> text = "The quick brown fox jumps over the lazy dog"
>>> st.tag(text.split())
[(u'The', u'DT'), (u'quick', u'JJ'), (u'brown', u'JJ'), (u'fox', u'NN'), (u'jumps', u'VBZ'), (u'over', u'IN'), (u'the', u'DT'), (u'lazy', u'JJ'), (u'dog', u'NN')]

Использование HunPOS (ПРИМЕЧАНИЕ: кодировка по умолчанию - ISO-8859-1, а не UTF8):

$ cd ~
$ wget https://hunpos.googlecode.com/files/hunpos-1.0-linux.tgz
$ tar zxvf hunpos-1.0-linux.tgz
$ wget https://hunpos.googlecode.com/files/en_wsj.model.gz
$ gzip -d en_wsj.model.gz 
$ mv en_wsj.model hunpos-1.0-linux/
$ python
>>> from os.path import expanduser
>>> home = expanduser("~")
>>> from nltk.tag.hunpos import HunposTagger
>>> _path_to_bin = home + '/hunpos-1.0-linux/hunpos-tag'
>>> _path_to_model = home + '/hunpos-1.0-linux/en_wsj.model'
>>> ht = HunposTagger(path_to_model=_path_to_model, path_to_bin=_path_to_bin)
>>> text = "The quick brown fox jumps over the lazy dog"
>>> ht.tag(text.split())
[('The', 'DT'), ('quick', 'JJ'), ('brown', 'JJ'), ('fox', 'NN'), ('jumps', 'NNS'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN')]

Использование Senna (убедитесь, что у вас установлена ​​последняя версия NLTK, были внесены некоторые изменения в API):

$ cd ~
$ wget http://ronan.collobert.com/senna/senna-v3.0.tgz
$ tar zxvf senna-v3.0.tgz
$ python
>>> from os.path import expanduser
>>> home = expanduser("~")
>>> from nltk.tag.senna import SennaTagger
>>> st = SennaTagger(home+'/senna')
>>> text = "The quick brown fox jumps over the lazy dog"
>>> st.tag(text.split())
[('The', u'DT'), ('quick', u'JJ'), ('brown', u'JJ'), ('fox', u'NN'), ('jumps', u'VBZ'), ('over', u'IN'), ('the', u'DT'), ('lazy', u'JJ'), ('dog', u'NN')]

Или попробуйте создать лучший теггер POS:


Жалобы на точность pos_tag в stackoverflow включают:

Проблемы с NLTK HunPos включают:

Проблемы с NLTK и тестером POS-терминалов в Stanford включают :

47
задан Jason Whitehorn 17 October 2008 в 00:17
поделиться

8 ответов

URL. Действие () получит Вас пустой URL для большинства перегрузок HTML. ActionLink, но я думаю, что функциональность URL от лямбды только доступна через HTML. ActionLink до сих пор. Надо надеяться, они добавят подобную перегрузку к URL. Действие в какой-то момент.

20
ответ дан stevemegson 7 November 2019 в 22:59
поделиться

Этот вопрос является более старым, и я только что запустил недавно с ASP.NET MVC, когда RC уже отсутствовал, но для тех, кто находит этот вопрос позже как я, это могло бы быть интересно:

, По крайней мере, в RC можно использовать URL. Действие () также с анонимными типами, результат выглядит намного более хорошим, чем предложения выше, я предполагаю:

<a href="<%= Url.RouteUrl("MyRoute", new { param1 = "bla", param2 = 5 }) %>">
   put in <span>whatever</span> you want, also <img src="a.gif" alt="images" />.
</a>

существует много других перегрузок для RouteUrl также, конечно.

39
ответ дан realMarkusSchmidt 7 November 2019 в 22:59
поделиться

Я использовал обходное решение, чтобы поместить маркер вместо текста для ActionLink и затем заменить его моим кодом изображения. Что-то вроде этого:

<%= Html.ActionLink("__IMAGE_PLACEHOLDER__", "Products").Replace("__IMAGE_PLACEHOLDER__", "<img src=\"" + myImgUrl + "\" />")%>

Не самое изящное решение, но это работает.

8
ответ дан Alan Mendelevich 7 November 2019 в 22:59
поделиться

В ASP.NET Бета MVC можно использовать HTML. Метод BuildUrlFromExpression в блоке фьючерсов (который не включен в ASP.NET по умолчанию установка MVC, но доступен от CodePlex) для создания ссылки вокруг изображения - или любой HTML - использование стиля лямбды синтаксис ActionLink, как это:

<a href="<%=Html.BuildUrlFromExpression<MyController>(c => c.MyAction())%>">
     <%=Html.Image("~/Content/MyImage.gif")%>
</a>

Для хранения ссылок изображения безграничными необходимо будет добавить правило CSS как это:

img
{
     border: none;
}
4
ответ дан adamjcooper 7 November 2019 в 22:59
поделиться

Вы можете использовать этот элемент управления. Он ведет себя как ActionLink.

http://agilefutures.com/index.php/2009/06/actionimage-aspnet-mvc

3
ответ дан 26 November 2019 в 19:20
поделиться

Url.Content () то, что вы ищете?

Задайте для него что-нибудь вроде Url.Content ("~ / path / to / something.jpg"), он превратит его в соответствующий путь в зависимости от приложения корень.

-Джош

1
ответ дан 26 November 2019 в 19:20
поделиться

Вы можете использовать метод URL.Action

<a href="<%= Url.Action("Create")  %>"><img src="../../Content/Images/add_48.png" /></a>
47
ответ дан 26 November 2019 в 19:20
поделиться

Это довольно просто для достижения в MVC 2. Я создал свой собственный очень простой метод расширения для поддержки лямбда-выражений для помощника Url.Action. Это требует, чтобы вы ссылались на MVC 2 Futures.
Вот код:

using System;
using System.Linq.Expressions;
using System.Web.Mvc;
using System.Web.Routing;

using ExpressionHelperInternal=Microsoft.Web.Mvc.Internal.ExpressionHelper;

namespace Bnv.Bssi.Web.Infrastructure.Helpers
{
    public static class UrlExtensions
    {
        public static string Action<TController>(this UrlHelper helper, Expression<Action<TController>> action) where TController : Controller
        {
            RouteValueDictionary routeValuesFromExpression = ExpressionHelperInternal.GetRouteValuesFromExpression<TController>(action);

            return helper.Action(routeValuesFromExpression["action"].ToString(), routeValuesFromExpression);
        }
    }
}

Вот как вы его используете:

<img src="<%= Url.Action<YourController>(c => c.YourActionMethod(param1, param2)); %>" />
2
ответ дан 26 November 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: